oracle nlog,C#使用NLog记录日志

NLog是什么?

NLog是一个简单灵活的.NET日志记录类库,可以免费使用的开源代码。

NLog日志输出什么类型?

输出文本文件,如TXT文件

输出控制台

输出EMAIL邮件

输出数据库

输出Windows系统日志等等

如何使用NLog组件?

1)下载NLog组件

通过VS2015的NuGet下载组件,见图

969af0ca01db1ddd13b7ff173a35f248.png

下载NLog和NLog.Config即可。

2)配置NLog.Config文件

关于NLog配置参数,请参考NLog官网:http://nlog-project.org/

源代码托管地址:https://github.com/nlog/NLog/wiki/Configuration-file

以下是我的配置文件中的关键配置代码,直接上代码:

dbProvider="Oracle.ManagedDataAccess.Client"

connectionStringName="OraConnstr"

commandText="insert into (APPNAME,MODULENAME,PROCNAME,OPERATIONTYPE,LOGGER,LOGMESSAGE,IP,LONGDATE,USERNAME,LOGLEVEL) values(:APPNAME,:MODULENAME,:PROCNAME,:OPERATIONTYPE,:LOGGER,:LOGMESSAGE,:IP,:TIME_STAMP,:USERNAME,:LOGLEVEL)"

commandType="Text" >

Oracle.ManagedDataAccess.Client

smtpServer="smtp.126.com"

smtpPort="25"

smtpAuthentication="Basic"

smtpUserName="你的126邮箱名字"

smtpPassword="你的126邮箱密码"

enableSsl="true"

addNewLines="true"

from="你的发送126邮箱地址"

to="接收的邮箱地址"

subject="主题名称"

header="==============="

body="${newline}${message}${newline}"

footer="================"

encoding="UTF-8" />

3)NLog自定义类库封装

以下是主要代码:

日志类初始化

try

{

if (File.Exists(CONFIGPATH))

{

StringBuilder sb = new StringBuilder(STRINGMAX);

WinAPI.GetPrivateProfileString("LOGMANAGER", "DATALOGSOURCE", "", sb, STRINGMAX, CONFIGPATH);

DATALOGSOURCE = sb.ToString();

WinAPI.GetPrivateProfileString("LOGMANAGER", "DATALOGNAME", "", sb, STRINGMAX, CONFIGPATH);

DATALOGNAME = sb.ToString();

WinAPI.GetPrivateProfileString("LOGMANAGER", "MODE", "", sb, STRINGMAX, CONFIGPATH);

LogMode = sb.ToString();

}

switch (LogMode)

{

case "1": //Txt文件记录日志

break;

case "2": //windows系统记录日志

if (!EventLog.SourceExists(DATALOGSOURCE))

EventLog.CreateEventSource(DATALOGSOURCE, DATALOGNAME);

SysLog = new EventLog(DATALOGNAME);

break;

case "3": //数据库记录日志

break;

case "4": //发送邮件

break;

}

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

写日志函数

public static void AddErrorLog(string msg, string APPNAME = "", string MODULENAME = "", string PROCNAME = "", string OPERATIONTYPE = "", string IP = "127.0.0.1", string USERNAME = "ADMIN", string LOGGER = "From")

{

switch (LogMode)

{

case "1": //Txt文件记录日志

logger.Error(msg);

break;

case "2": //windows系统记录日志

SysLog.Source = DATALOGSOURCE;

SysLog.WriteEntry(msg, EventLogEntryType.Error);

break;

case "3"://写数据库表

WriteDB(msg, LogLevel.Error, APPNAME, MODULENAME, PROCNAME, OPERATIONTYPE, IP, USERNAME, LOGGER);

break;

case "4": //发送邮件

logger.Error(msg);

break;

}

}

写数据库公共函数:

public static void WriteDB(string LOGMESSAGE, LogLevel Level, string APPNAME = "", string MODULENAME = "", string PROCNAME = "", string OPERATIONTYPE = "", string IP = "127.0.0.1", string USERNAME = "ADMIN", string LOGGER = "From")

{

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["LOGGER"] = LOGGER;

lei.Properties["LOGMESSAGE"] = LOGMESSAGE;

lei.Properties["IP"] = IP;

lei.Properties["TIME_STAMP"] = DateTime.Now;

lei.Properties["USERNAME"] = USERNAME;

lei.Properties["LOGLEVEL"] = Level.Name;

lei.Level = Level;

logger.Log(lei);

}

NLog自定义类库使用

直接调用写数据库:Log.AddErrorLog(ex.Message,"应用名称","模块名称","系统MAIN函数执行","自动","127.0.0.1",sysdata.curUserID,"Program");

eff91ff5b8935777f109934006bd57b4.png

可以修改sysconfig.ini文件的日志写入模式,见图

927e255fe30ec9e71ec80cbe32283fae.png

源代码我已上传到百度网盘:链接:https://pan.baidu.com/s/1utnhzcyZJ_7gpnALAsZWDA

有需要的朋友可以加我微信:dj1348822213

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值