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. DOCTYPE是什么鬼?文档模式又是什么鬼?

    !DOCTYPE !DOCTYPE是什么: 在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(文档类型定义 DTD)解析文档( ...

  2. 怎么解决mysql不允许远程连接的错误

    最近使用Navicat for MySQl访问远程mysql数据库,出现报错,显示"1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connec ...

  3. C#-面向对象的三大特性——多态(虚方法与重写、抽象类、接口)

    多态 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法. 编译时的多态性:编译时的多态性是通过重载来实现的.对于非虚的成员来说 ...

  4. 12 抽象函数-abstract

    只有函数的定义,没有函数体的函数被称为抽象函数 1.抽象函数就是没有函数体的函数 2.抽象类使用abstract来定义 3.抽象类不能生产对象,但是可以拥有构造函数 abstract void fun ...

  5. Win7另存文件没有桌面的解决方法

    今日一朋友保存文件随口说了一句我那个桌面找不到了...我略感惊奇,没遇到这么个情况.决定,问度娘,在此做下记录,以便以后自己或朋友查阅. 我们在网上另存一个文件,打开另存窗口,发现没有“桌面” 在收藏 ...

  6. js清除浏览器缓存的几种方法

    2014年9月24日 4692次浏览 关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数 ...

  7. 【POJ 1389】Area of Simple Polygons(线段树+扫描线,矩形并面积)

    离散化后,[1,10]=[1,3]+[6,10]就丢了[4,5]这一段了. 因为更新[3,6]时,它只更新到[3,3],[6,6]. 要么在相差大于1的两点间加入一个值,要么就让左右端点为l,r的线段 ...

  8. 【codevs3945】 完美拓印

    http://codevs.cn/problem/3945/ (题目链接) 题意 给出一个诡异的图形,再给出一个歪七扭八的线,问图形上下两条边与线的匹配→_→ Solution 前后求差然后KMP,这 ...

  9. javaBean和Servlet有什么区别

    1.javabean无非就是里面有些set和get方法 2.servlet用来处理一些逻辑层 3.javabean.servlet.jsp分别对应M(odel).C(ontroller).V(iew) ...

  10. JeeSite环境搭建及运行和打包(master20161117)

    涉及的软件: 1.phpStudy(主要用MySql) 2.maven3(用于依赖包,下面我将上传已经下载好所有依赖包的版本,保证运行正常) 具体操作: 0.前言 由于GitHub上的Release版 ...