osharp3 原来的数据日志,有配置文件中有这总开关,DataLoggingEnabled,原来的程序是,这个总开关关了,就无法记录数据日志了,,如果开了,,他不管记录不记录数据日志,系统都会存数据改动日志到DataLogCache中

我在 DbContextBase中注入了一个操作记录员类 public IOperateLoger OperateLoger { get; set; }

    public class OperateLoger : IOperateLoger,IScopeDependency
{
public IOperateLogWriter LogWriter { get;private set; }
/// <summary>
/// 获取或设置 操作人信息
/// </summary>
public IOperator Operator { get; private set; } public IDataLogCache DataLogCache { get;private set; } public OperateLoger(IOperator @operator, IOperateLogWriter operateLogWriter, IDataLogCache dataLogCache)
{
Operator = @operator;
LogWriter = operateLogWriter;
DataLogCache = dataLogCache;
} public FunctionInfo FunctionInfo { get; set; }
public OperationResult OperationResult { get; set; } public bool DataLogEnabled {
get { return FunctionInfo == null?false:FunctionInfo.DataLogEnabled; }
} public void SaveLog()
{
if(FunctionInfo.OperateLogEnabled == false)
return;
var log = new OperateLog();
log.Id = CombHelper.NewComb();
log.CreatedTime = DateTime.Now;
log.OperatorInfo.UserName = Operator.UserName;
log.OperatorInfo.UserId = Operator.UserId;
log.FunctionName = FunctionInfo.ModuleName + FunctionInfo.PowerName;
log.OperationResult = OperationResult;
if (FunctionInfo.DataLogEnabled)
{
foreach (var dataLog in DataLogCache.DataLogs)
{
log.DataLogs.Add(dataLog);
}
}
LogWriter.Write(log);
}
}

使用方法:

我们就可以通过 功能信息dto 来控制是否记录操作日志,,针对性比较强

    public class FunctionInfo
{
/// <summary>
///权限标记
/// </summary>
[Required, StringLength(50)]
public string PowerCode { get; set; } /// <summary>
///权限名称
/// </summary>
[Required, StringLength(50)]
public string PowerName { get; set; } /// <summary>
///模块标记
/// </summary>
[Required, StringLength(50)]
public string PageCode { get; set; }// /// <summary>
///模块名称
/// </summary>
[Required, StringLength(50)]
public string ModuleName { get; set; } /// <summary>
/// 获取或设置 是否启用操作日志
/// </summary>
public bool OperateLogEnabled { get; set; } /// <summary>
/// 获取或设置 是否启用数据日志
/// </summary>
public bool DataLogEnabled { get; set; }
}
相关链接:
 
附加说明:osharp3的操作日志功能
 
 数据日志的开头,还可以在实体信息记录EntityInfo上控制
配置那开了DataLoggingEnabled,可以针对某个实体在EntityInfo关闭
功能信息Function上也有操作日志和数据日志的日志开关

osharp3 操作日志之数据日志 控制增强的更多相关文章

  1. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  2. ORACLE 移动数据文件 控制文件 重做日志文件

    ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

  3. Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...

  4. Mysql利用binlog日志恢复数据操作(转)

    a.开启binlog日志:1)编辑打开mysql配置文件/etc/mys.cnf[root@vm-002 ~]# vim /etc/my.cnf在[mysqld] 区块添加 log-bin=mysql ...

  5. 【转】Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  6. SqlServer 2014该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获

    环境:AlwaysOn集群 操作系统:Windows Server 2008 R2 数据库: SQL Server 2014 错误提示:“该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获 ...

  7. .NET Core下的日志(3):如何将日志消息输出到控制台上

    当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider. ...

  8. 通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析

    通过DataWorks归档日志服务数据至MaxCompute 官方指导文档:https://help.aliyun.com/document_detail/68322.html但是会遇到大家在分区上或 ...

  9. 解说mysql之binlog日志以及利用binlog日志恢复数据

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

随机推荐

  1. hdu3555 数位dp

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...

  2. 100200H

    这是个bfs 首先建图,先从终点bfs求出每点距离,然后从起点开始,确定初始方向:某点和自己相邻距离比自己小1就是 然后就先贪心和上次一样的方向,如果不能走,就找出一个方向,把自己当前方向改掉,重复过 ...

  3. ASP.NET MVC html help

    public static class HtmlHelper { /// <summary> /// 返回没有边框的只读的TextBox标签 /// </summary> // ...

  4. 【USACO 1.5】Prime Palindromes

    /* TASK: pprime LANG: C++ SOLVE: 枚举数的长度,dfs出对称的数,判断是否在范围内,是否是素数 原来想着枚举每个范围里的数,但是显然超时,范围最大是10^9. 对称的数 ...

  5. 多线程中的synchronized

    synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...

  6. [cf140e]New Year Garland

    Description 用$m$种颜色的彩球装点$n$层的圣诞树.圣诞树的第$i$层恰由$l[i]$个彩球串成一行,且同一层内的相邻彩球颜色不同,同时相邻两层所使用彩球的颜色集合不同. 求有多少种装点 ...

  7. 自动完成--autoComplete插件(2)

    远端的也可以成为本地的数据 4) lookupLimit 类型:数字 说明:本地数据显示的最大条数,服务器段的没有效果,服务器端的可以后台设置 默认:没有限制 5) lookupFilter 类型: ...

  8. maven仓库没有的包依赖

    如果有个jar包是我们自己打的,怎么放到maven中呢? 首先在项目里面新建一个lib目录,如果有lib目录则不需要新建,然后放自己的jar包进去,maven的pom.xml配置是: <depe ...

  9. Deep Learning in NLP (一)词向量和语言模型

    原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...

  10. python编码

    一.编码 常见的编码比较: ascii:1个字节 unicode:2个字节 utf-8:英文1个字节,汉字3个字节 二.一个编码问题 问:如下代码设置了在代码中添加了coding: utf-8,但是在 ...