博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4net应用
阅读量:5994 次
发布时间:2019-06-20

本文共 3058 字,大约阅读时间需要 10 分钟。

  今天主要说的是数据库保存日志,采用sqlite,c#.net的网站应用,实现了自定义信息的扩展,满足和兼容了之前的日志功能,采用数据库存储日志的目的,主要是考虑到日后查询的方便.

  最近计划改进项目的日志处理方式,所以选择了开源的Log4net作为首选,使用中大部分功能都从网上找到了教程和案例,唯独一个问题,纠缠了我2个小时,郁闷之极,但最后焕然大悟,解决了,就是log4net保存sqlite数据库文件的权限问题,大家需要注意,log4net保存数据库日志时,受web站权限限制,无法保存日志记录,所以DB文件不要放在网站结构的目录里,可以使用绝对路径,放在网站根目录之上的目录或其他盘中.

 

下面是一些应用中使用的代码及说明:

我的项目是一个网站项目,所以在设置log4net配置文件的时候,尽量做到灵活一点:将log4net配置文件的文件路径设置到web.config中:

<configuration>

    <appSettings>        

<add key ="log4net_TG" value="TG\log4net_sqlite.config"/>    

</appSettings>

</configuration>

然后在Global.asax中配置log4net:

string pa = System.Configuration.ConfigurationManager.AppSettings["log4net_setfile"]; // Server.MapPath("~") + @"\log4net_sqlite.config";

        pa = System.Web.HttpContext.Current.Server.MapPath(pa);
        log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(pa));

下面贴出log4net_sqlite.config的配置内容:

View Code

省去了保存的txt文本文件的设置,请参考其他出处;当然,还有一些属性没有弄明白意思,日后有时间再做一些研究

log4net的调用更简单,如果做自定义字段扩展,就多几行代码处理下就可以了:

Log.LogEx.SetCustomInfo("u1","loca","ok1");   //添加扩展的自定义信息

log4net.ILog log = log4net.LogManager.GetLogger("LogToSqlite");    //创建Log    

log.Info("新消息"); //输出日志数据

其中,SetCustomInfo方法的代码是这样的实现自定义信息的:

    public  static void SetCustomInfo(string _username,string _location,string _remarke)        {                log4net.ThreadContext.Properties["UserName"] = _username;                log4net.ThreadContext.Properties["Uip"] = MaComm_web.GetClientIP();                log4net.ThreadContext.Properties["Location"] = _location;                log4net.ThreadContext.Properties["Remark"] = _remarke;        }

正因为这里的代码设置了新的信息,所以在log4net_sqlite.config里的参数数据,才可以通过%property{UserName}来获取。还有其他的方法也可以实现自定义信息,网上有相关资料,这里我就不提了。

最后说明下,缓存的数量根据每个项目单个日志的数据量和每小时保存次数来设定50-200之间比较合适,避免频繁操作数据库,占用CPU与磁盘资源

 

好了,下班,其他资料以后再补充了。

 

 

 

 

转载于:https://www.cnblogs.com/dgjack/archive/2013/03/26/2983193.html

你可能感兴趣的文章
linux centos service 参数详解
查看>>
关于maven pom
查看>>
reverse proxy and forward proxy
查看>>
安装Tomcat指定JDK
查看>>
年终总结2017
查看>>
Visual Studio 2013 为C#类文件添加版权信息
查看>>
Fence Repair(优先队列容器的应用)
查看>>
Jquery filter()方法简介
查看>>
SVN常见问题及解决方式(一)
查看>>
算法-search
查看>>
线程间通信推荐用队列
查看>>
个人项目实验报告——记事本
查看>>
初识django框架
查看>>
vue02
查看>>
topcoder srm 709 div1
查看>>
topcoder srm 685 div1
查看>>
flash Timer类使用
查看>>
博客目录
查看>>
SAP自带的创建报表工具
查看>>
杭电1113--Word Amalgamation
查看>>