转 用log4.net记录日志

摘要:
原始地址:http://hi.baidu.com/huaiwen/blog/item/4de29e22efa10c42ad34dedd.html1.log4net.rar(首先下载此处使用的相应log4net.dll。netframe1.1)2。添加引用。介绍log4net.dll 3。编写LogUtil类。(为了便于重用,请独立创建一个日志记录类。该类有一个用于日志记录的静态方法Log,并有一个私有方法

原文地址:http://hi.baidu.com/huaiwen/blog/item/4de29e22efa10c42ad34dedd.html

 

1.log4net.rar (首先下载合适的log4net.dll,此处用的.net frame1.1)

2.添加引用.引入log4net.dll

3.编写类 LogUtil,(为了方便复用而独立建一个日志记录类,该类有静态方法Log进行日志记录,且有一个私有的,只读的静态变量log4net.ILog bizLog)

using System;

namespace Test.Log
{
    
/// <author>9421</author>
    
/// <date>2010-01-07</date>
    
/// <summary>
    
/// 日志记录类
    
/// </summary>
    public class LogUtil
    {
        
/// <summary>
        
/// business log
        
/// 通过"BusinessLogger"从web.config中读取bizLog的信息
        
/// </summary>
        private static readonly log4net.ILog bizLog = log4net.LogManager.GetLogger("BusinessLogger");

        
/// <summary>
        
/// log an information message.
        
/// </summary>
        
/// <param name="message">message to be logged</param>
        public static void Log(string message)
        {
            
try
            {
                
if (!bizLog.IsInfoEnabled)
                {
                    
//若不可用,重新配置
                    log4net.Config.XmlConfigurator.Configure();
                }
                bizLog.Info(message);
                
/* 可根据不同情况,调用不同的方法进行记录
                bizLog.Debug(message);
                bizLog.Error(message);
                bizLog.Fatal(message);
                 
*/
            }
            
catch (Exception ex)
            {
                ex.GetType();
            }
        }
    }
}

4.在web.config中配置LogUtil类中log4net.ILog的相关信息:

<configSections>
    
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  
</configSections>

  
<log4net debug="true">
    
<appender name="BusinessRollingFile" type="log4net.Appender.RollingFileAppender,log4net">
      
<file value="log/BusinessLog"/>
      
<appendToFile value="true"/>
      
<datePattern value="yyyyMMdd&quot;.log&quot;"/>
      
<StaticLogFileName value="false"/>
      
<maxSizeRollBackups value="100"/>
      
<rollingStyle value="Date"/>
      
<encoding value="UTF-8"/>
      
<layout type="log4net.Layout.PatternLayout">
        
<conversionPattern value="%-30d{yyyy/MM/dd HH:mm:ss} %m %n"/>
      
</layout>
    
</appender>

    
<logger name="BusinessLogger">
      
<level value="INFO"/>
      
<appender-ref ref="BusinessRollingFile"/>
    
</logger>
  
</log4net>

ps:<1>.logger 的name 为BusinessLogger,也即在LogUtil中使用GetLogger("BusinessLogger")所获得的logger信息;--可扩展为多个logger配置信息,根据业务项目需要,通过不同的name获得所需的logger

    <2>. logger的appender是记录的方式.此处为type="log4net.Appender.RollingFileAppender,log4net"代回滚的文件输出格式

    <3>.logger的level属性定义不同级别,七种日志级别:debug,info,warn,error,fatal,all,off..此处为info

    <4>.appender的属性: file 对应日志文件的名称(此处包含路径,没有则新建),StaticLogFileName  是否为固定的文件名(此处为false不固定),在文件名不固定的前提下,设置<appendToFile value="true"/>      <datePattern value="yyyyMMdd&quot;.log&quot;"/>
将根据日期,为日志文件定义不同的文件名(如此处为类似BussinessLog20091201.log,BussinessLog20091202.log的文件名

5..在需要的地方调用即可

LogUtil.Log("信息:9421登陆成功");
 

引用::参考::

log4的使用方法:

log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测
有两种配置方式:一种程序配置,一种文件配置
有三个主要单元要了解,Logger,appender,layout.

logger是进行记录的主要类,appender是记录的方式,layout是记录的格式
logger七种日志级别:debug,info,warn,error,fatal,all,off
最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用

appender主要分三类,终端输出,文件输出,流输出
ConsoleAppender
FileAppender
WriterAppender

layout也分三类:简单格式,html格式,匹配格式
SimpleLayout
HTMLLayout
PatternLayout

输出简写:(用在PatternLayout)
%m 输出代码中指定的消息
%p 输出优先级
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。一般使用了它就不需使用%c了


作用实例:
程序配置一般过程:
1.得到特定名称的logger
2.得到其中一个layout
3.根据layout得到appender
4.logger添加appender
5.logger设置级别
6.logger输出有级别的日志信息

程序:
Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
SimpleLayout simpleLayut = new SimpleLayout()               //取得layout
FileAppender fa = new FileAppender(simpleLayout,"test.log") //取得appender
logger.addAppender(fa)                                      //添加appender
logger.set((Level)Level.DEBUG)                              //设置级别
logger.debug("hihihihih")                                   //记录信息


文件配置过程:
1.得到特定名称的logger
2.加载配置文件       (配置文件做了2-5的工作)
3.logger输出有级别的日志信息

文件配置程序:
1.Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
2.使用下面的配置加载
3.输出信息


文件配置分properties,xml
读取properties:
PropertyConfigurator.configure("logTest.properties");

读取xml:
DOMConfigurator.configure("src/logTest.xml");

---------------------------

一、常用输出格式

%c   列出logger名字空间的全称,如加上{<层数>}表示出从最内层算起的指定层数的名字空间
%X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
%p 日志信息级别
%d   %d{<日期格式>}:日志信息产生时间,使用ISO8601定义的日期格式
%C   日志信息所在地(全限类名)
%m   产生的日志具体信息
%n    输出日志信息换行
%F 显示调用logger的源文件名
%l     输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%L    显示调用logger的代码行
%M   显示调用logger的方法名
%r     显示从程序启动时到记录该条日志时已经经过的毫秒数
%t     输出产生该日志事件的线程名
%% 显示一个
二、log4j.properties

#控制包中日志输出级别
log4j.logger.org.apache.struts = debug

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

#应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis

# 应用于文件回滚
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=100KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=10
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n


#应用于socket
log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

# 发送日志给邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

# 用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

#每日回滚日志文件
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %-4r [%t] %-5p %c %x - %m%n

 

免责声明:文章转载自《转 用log4.net记录日志》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇BurpSuit工具安装和基本使用方法peewee:精致小巧的orm,sqlalchemy的一个很好的替代品下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Confluence 6 配置日志

我们推荐你根据你的需求来配置你自己的 Confluence 日志。你可以有下面 2 种方法来修改你的日志: 通过 Confluence 管理员控制台进行配置 – 你的修改仅在本次修改有效,下次重启后将会把所有修改重置。 编辑属性文件 – 你的修改将会在下次重启后生效同时针对所有的会话。 这 2 种方式的修改的方法将在下面的章节中描述。在一些很不常见的情...

Logback 也爆雷了,惊爆了。。。

Logback 也爆雷了 Log4j2 漏洞最新进展: Log4j 2.3.1 发布!又是什么鬼?? Log4j2 核弹级漏洞刚结束没几天,Logback 其实也爆雷了,这你能信?? 栈长在上篇文章提到,因 Log4j2 漏洞的反复无常,导致某些公司已经切换到 Logback 了,如果这也是你们公司的决定,请在文章下面评论区留言。 可令栈长万万想不到的是,...

java web使用log4j无法写入到日志文件

项目环境 1.项目类型:java web 2.web容器:tomcat 3.框架:spring 4.调用代码:spring配置的定时任务,任务执行类用@Component注入(开始还以为是这里出了问题 ̄□ ̄||) 主要现象 1.启动tomcat后,发现日志无法写入 2.删除日志文件再次启动,日志文件没有新建 3.单独在类中执行main方法里的log操作可以...

Java——Log4j与Log4j2

完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是System.out.println()无法完成日志信息根据用途与记录内容的不同,分为调试日志、运行日志、异常日志等。用于日志记录的技术很多,如 jdk 的 logger 技术,apache 的 log4j、log4j2 技...

log4net各种Filter使用【转】

log4net各种Filter使用【转】 log4net里面的filter类常用的为:      1、DenyAllFilter         拒绝所用的日志输出         <filter type="log4net.Filter.LevelMatchFilter">             <param name="LevelT...

log4j学习总结

一直使用log4j来记录日志,但是一直以来没有深入研究过log4j,最近研究了下log4j,下面总结一下: log4j配置: 1. 配置根Logger,其语法为:  log4j.rootLogger = [level] , appenderName1, appenderName2, … 其中,level 是日志记录的优先级,分为 OFF、FATAL、E...