Log4Net日志的简单使用示例
前言
源码参考示例地址
http://www.51aspx.com/Code/log4netusedemo/2707
本例博客园源码
https://files.cnblogs.com/files/masonblog/Log4NetSample.zip
GitHub源码托管地址
https://github.com/catbiscuit/Log4NetSample
区别:
博客园的版本是2018-05-16 10:00:12提交的第一版本,可能存在部分问题。
GitHub托管的代码,后期本人发现代码的问题在有时间的情况下会进行相应的更新。
Log4NetFile项目
使用Log4Net记录日志到文本文件
配置信息
配置信息均保存在log4net.config文件中
注册log4net配置信息
本例使用的是web项目。
注册配置信息有两种方式
(1)本例使用的Global.asax
protected void Application_Start(object sender, EventArgs e)
{
//注册 log4net(或者在AssemblyInfo.cs中添加注册的方法)
System.IO.FileInfo configFile = new System.IO.FileInfo(HttpContext.Current.Server.MapPath("log4net.config"));
log4net.Config.XmlConfigurator.Configure(configFile);
}
(2)Properties-AssemblyInfo.cs
追加一句:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
使用
(1)log4net.config文件使用的是root根配置
<!--根配置-->
<root>
<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
<level value="ERROR"/>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
</root>
(2)在调用时使用Type获取ILog对象
public static ILog GetLogger(Type type);
示例:
//获取调用者的类属性
StackTrace trace = new StackTrace();
Type type = trace.GetFrame(1).GetMethod().ReflectedType;
log4net.ILog log = log4net.LogManager.GetLogger(type);
if (log.IsInfoEnabled)
{
log.Info(message);
}
Log4NetOriginalSQL项目
使用Log4Net原版的数据库表进行日志的记录
可以配置日志记录的方式,下面的配置为:SqlServer和File两种方式都记录。
删除配置则不进行记录。
<appender-ref ref="AdoNetAppender_SqlServer" />
<appender-ref ref="InfoAppender" />
配置信息
配置信息均保存在log4net.config文件中
注册log4net配置信息
本例使用的是web项目。
注册配置信息有两种方式
(1)本例使用的Global.asax
protected void Application_Start(object sender, EventArgs e)
{
//注册 log4net(或者在AssemblyInfo.cs中添加注册的方法)
System.IO.FileInfo configFile = new System.IO.FileInfo(HttpContext.Current.Server.MapPath("log4net.config"));
log4net.Config.XmlConfigurator.Configure(configFile);
}
(2)Properties-AssemblyInfo.cs
追加一句:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
使用
根据Log4Net.config中配置的不同获取ILog对象的方式也不同
(1)log4net.config文件使用的是root根配置
<!--根配置-->
<root>
<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
<level value="ERROR"/>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
</root>
在调用时使用Type获取ILog对象
public static ILog GetLogger(Type type);
示例:
//获取调用者的类属性
StackTrace trace = new StackTrace();
Type type = trace.GetFrame(1).GetMethod().ReflectedType;
log4net.ILog log = log4net.LogManager.GetLogger(type);
if (log.IsInfoEnabled)
{
log.Info(message);
}
插入数据库的内容不同(Logger为调用者的类的完整路径)
Id
Date Thread Level Logger
Message Exception
1 2018-05-15 16:53:39.093 8 INFO Log4NetOriginalSQL.OriginalSQLAppend 2018/5/15 16:53:39:插入的内容
(2)log4net.config文件使用的是logger配置
<logger name="sqlLogger">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender_SqlServer"/>
</logger>
在调用时使用LoggerName获取ILog对象
public static ILog GetLogger(string name);
示例:
log4net.ILog log = log4net.LogManager.GetLogger("sqlLogger");
log.Info(message);
插入数据库的内容不同(Logger为获取时使用的LoggerName)
Id Date Thread Level Logger Message Exception
1 2018-05-15 16:53:39.093 8 INFO sqlLogger 2018/5/15 16:53:39:插入的内容
Log4NetCustomSQL项目
使用自定义的日志类记录Log4Net日志
可以配置日志记录的方式,下面的配置为:SqlServer和File两种方式都记录。
删除配置则不进行记录。
<appender-ref ref="AdoNetAppender_SqlServer" />
<appender-ref ref="InfoAppender" />
经过测试发现InfoAppender日志只会记录自定义日志类的命名空间,所以将其注释,仅将日志记录插入到数据库中。
配置信息
配置信息均保存在log4net.config文件中
注册log4net配置信息
本例使用的是web项目。
注册配置信息有两种方式
(1)本例使用的Global.asax
protected void Application_Start(object sender, EventArgs e)
{
//注册 log4net(或者在AssemblyInfo.cs中添加注册的方法)
System.IO.FileInfo configFile = new System.IO.FileInfo(HttpContext.Current.Server.MapPath("log4net.config"));
log4net.Config.XmlConfigurator.Configure(configFile);
}
(2)Properties-AssemblyInfo.cs
追加一句:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
使用
根据Log4Net.config中配置的不同获取ILog对象的方式也不同
(1)log4net.config文件使用的是root根配置(测试失败,不知道是不是配置问题)
<!--根配置-->
<root>
<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
<level value="ERROR"/>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
<appender-ref ref="ADONetAppender_SqlServer"/>
</root>
经测试使用root配置后,
使用public static ILog GetLogger(Type type);
获取的日志操作对象,无法将日志插入到数据库中。
(2)log4net.config文件使用的是logger配置
<logger name="sqlLogger">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender_SqlServer"/>
</logger>
在调用时使用LoggerName获取ILog对象
public static ILog GetLogger(string name);
示例:
log4net.ILog log = log4net.LogManager.GetLogger("sqlLogger");
log.Info(message);
注意的地方
(1)Log4Net.config配置文件中的自定义字段配置
其中的loyout配置,自定义字段的类的属性
格式:
<layout type = "命名空间.类名,命名空间">
<conversionPattern value = "%property{Event_Type} "/>
</layout>
示例:Event_Type 字段
<!-- 日志类型,这里均为3 -->
<parameter>
<parameterName value = "@Event_Type"/>
<dbType value = "Int32"/>
<size value = "50"/>-->
<layout type = "Log4NetCustomSQL.MyLayout,Log4NetCustomSQL">
<conversionPattern value = "%property{Event_Type} "/>
</layout>
</parameter>
(2)Log4Net日志自定义字段
本例中的LogContent类,未做测试。
类属性与数据库日志表字段不相符(多字段或少字段)是否会报错。
(3)MyLayout和MyMessagePatternConverter 自定义字段的相关配置类
不懂什么意思,这个是直接从网上示例中复制的。
Log4Net日志的简单使用示例的更多相关文章
- log4net日志的简单配置
说起来log4net,我一直都知道这个的存在,但实际在项目中还真是没有去自己写过的那,这一次我在项目完成后并没有着急下一个项目的开始,于是突然想起来是否添加一个日志的编写,于是开始了log4net的总 ...
- Log4net创建日志及简单扩展
转:http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log ...
- log4net日志的配置及简单应用
在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率.而本菜鸟在大神推荐和指导下使用log4net这一插件工 ...
- 使用Log4net创建日志及简单扩展
如何使用Log4net创建日志及简单扩展 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的 ...
- .Net core2.0日志组件Log4net、Nlog简单性能测试
.Net core之Log4net.Nlog简单性能测试 比较log4net.nlog的文件写入性能(.netcore环境),涉及代码和配置如有不正确的地方,还请批评指正. 原创,转载请著名出处:ht ...
- Log4net 日志使用介绍
概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...
- Log4net 日志
Log4net 日志使用介绍 概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以 ...
- [.Net MVC] 使用 log4net 日志框架
项目:后台管理平台 意义:项目开发中提出增加日志功能,对关键的操作.程序运行中的错误信息进行记录,这对程序部署后的调试有很大意义. 注:本文只是对网上搜集的信息进行了整合,以备今后查询. 关键字:.N ...
- C#控制台程序使用Log4net日志组件
1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 项目源码在文章底部 2.首先创建一个控制台程序,引入Log4n ...
随机推荐
- 音乐制作:用FL Studio做电子音乐
电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...
- 有了Git这个操作,我再也不怕代码混乱了!
大家好,今天的文章我们来介绍git当中一个非常常用的功能--储藏. 大家在协同开发的时候应该都有这样的经历,有的时候我们的功能开发了一半,因为某些原因我们想要checkout到其他的分支上查看代码或者 ...
- Docker 入门介绍
Docker是什么 从发布到现在 docker一直很受关注,在一定程度是改变了软件行业 如果你还不知道 docker 是什么是不是有点out了,接下来我们来介绍docker是什么,解决了什么问题,好处 ...
- linux下定时任务的简单示例
1.方式一:用sleep实现定时任务: 1.1 编辑shell脚本,如下sleep_aa.sh: #!/bin/bash t1=`date "+%Y-%m-%d %H:%M:%S" ...
- iOS UIImageView contentMode使用详解
UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定:UIViewContentModeScaleToFill //填满i ...
- 秒极啊!手把手带你进行shiro授权拦截器的重写,学到了学到了
shiro整合前后端分离的springboots,Vue项目真的是有很多大坑啊. 今天我的主题是:如何设置shiro过滤器. 遇到问题:我的项目是前后端分离的,shiro里面有一个shiroFilte ...
- fist-第三天冲刺随笔
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- JZOJ【NOIP2012模拟8.9】2020.10.5 T1
逐个击破 题目 Description 三大战役的平津战场上,傅作义集团在以北平.天津为中心,东起唐山西至张家口的铁路线上摆起子一字长蛇阵,并企图在溃败时从海上南逃或向西逃窜.为了就地歼敌不让其逃走, ...
- 20200311_解决Could not resolve host: mirrorlist.centos.org
[root@localhost ~]# yum -y install wget 已加载插件:fastestmirror Determining fastest mirrors Could not re ...
- badboy下载
最近新接触了badboy软件,以下是百度网盘链接,有需要可以下载. 链接:https://pan.baidu.com/s/1O4oIhx-twcaMA_fDzRQPHg提取码:7i44 二维码: