1、通过Nuget安装NLog 下载,简单入门 请参照 我刚才转的几篇文章,下面我直接贴代码
2、建表语句
create table TBL_LOG( id VARCHAR2(60) not null, appname VARCHAR2(20), modulename VARCHAR2(30), procname VARCHAR2(30), operationtype VARCHAR2(20), logger VARCHAR2(500), logmessage VARCHAR2(3000) not null, ip VARCHAR2(32), longdate VARCHAR2(36), username VARCHAR2(36), createdate DATE default sysdate, loglevel VARCHAR2(12))
3、NLog.config,正式运行 throwExceptions="false"
4、简单封装
public class Logger { #region 初始化 ////// 数据错误无法获取用户时使用 /// public static string DefaultUser = "system"; ////// 默认地址 /// public static string DefaultIP = "127.0.0.1"; NLog.Logger _logger; private Logger(NLog.Logger logger) { _logger = logger; } public Logger(string name) : this(LogManager.GetLogger(name)) { } public static Logger Default { get; private set; } static Logger() { Default = new Logger(LogManager.GetCurrentClassLogger()); } #endregion #region Process日志写入 ////// 日志写入 /// /// 菜单大类 /// 二级菜单 /// 本级菜单 /// 操作类型 /// 详细日志 /// ip地址 /// 用户名 /// LOGGER public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER) { if (LOGMESSAGE.Length > 3000) { LOGMESSAGE = LOGMESSAGE.Substring(0, 3000); } LogEventInfo lei = new LogEventInfo(); lei.Properties["ID"] = Guid.NewGuid().ToString("D"); lei.Properties["APPNAME"] = APPNAME; lei.Properties["MODULENAME"] = MODULENAME; lei.Properties["PROCNAME"] = PROCNAME; lei.Properties["OPERATIONTYPE"] = OPERATIONTYPE; lei.Properties["LOGMESSAGE"] = LOGMESSAGE; lei.Properties["IP"] = IP; lei.Properties["USERNAME"] = USERNAME; lei.Properties["LOGGER"] = LOGGER; lei.Level = LogLevel.Info; _logger.Log(lei); } ////// 日志写入,自己传日志类别 /// /// 菜单大类 /// 二级菜单 /// 本级菜单) /// 操作类型 /// 详细日志 /// ip地址 /// 用户名 /// LOGGER /// 日志级别 public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER, LogLevel Level) { if (LOGMESSAGE.Length > 3000) { LOGMESSAGE = LOGMESSAGE.Substring(0, 3000); } LogEventInfo lei = new LogEventInfo(); lei.Properties["ID"] = Guid.NewGuid().ToString("D"); lei.Properties["APPNAME"] = APPNAME; lei.Properties["MODULENAME"] = MODULENAME; lei.Properties["PROCNAME"] = PROCNAME; lei.Properties["OPERATIONTYPE"] = OPERATIONTYPE; lei.Properties["LOGMESSAGE"] = LOGMESSAGE; lei.Properties["IP"] = IP; lei.Properties["USERNAME"] = USERNAME; lei.Properties["LOGGER"] = LOGGER; lei.Level = Level; _logger.Log(lei); } #endregion } ////// 操作类型枚举 /// public enum OperationType { ////// 保存或添加 /// [System.ComponentModel.Description("保存或添加")] ADD, ////// 更新 /// [System.ComponentModel.Description("更新")] UPDATE, ////// 审核 /// [System.ComponentModel.Description("审核")] AUDIT, ////// 删除 /// [System.ComponentModel.Description("删除")] DELETE, ////// 读取/查询 /// [System.ComponentModel.Description("读取/查询")] RETRIEVE, ////// 登录 /// [System.ComponentModel.Description("登录")] LOGIN, ////// 查看 /// [System.ComponentModel.Description("查看")] LOOK }
5、asp.net中的调用列子:
1 Logger.Default.Process("系统管理", "权限管理", "用户管理", OperationType.RETRIEVE, "测试写入", Logger.DefaultIP, Logger.DefaultUser, this.GetType().ToString(), NLog.LogLevel.Error); 2 Logger.Default.Process("系统管理", "权限管理", "用户管理", OperationType.RETRIEVE, "测试写入", Logger.DefaultIP, Logger.DefaultUser, this.GetType().ToString());