建筑设计公司网站模板,上海专业网站建设服,网站建设结论,wordpress插件搬家一、介绍Log4j是Apache的一个开放源代码项目#xff0c;通过使用Log4j#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等#xff1b;我们也可以控制每一条日志的输出格式#xff1b;通过定…一、介绍Log4j是Apache的一个开放源代码项目通过使用Log4j我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等我们也可以控制每一条日志的输出格式通过定义每一条日志信息的级别我们能够更加细致地控制日志的生成过程。Log4j由三个重要的组件构成日志信息的优先级日志信息的输出目的地日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG分别用来指定这条日志信息的重要程度日志信息的输出目的地指定了日志将打印到控制台还是文件中而输出格式则控制了日志信息的显示内容。二、配置文件其实您也可以完全不使用配置文件而是在代码中配置Log4j环境。但是使用配置文件将使您的应用程序更加灵活。Log4j支持两种配置文件格式一种是XML格式的文件一种是properties格式的文件。下面我们介绍使用properties格式做为配置文件的方法示例log4j.rootLoggerINFO, A1log4j.appender.A1org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layoutorg.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern%-4r %-5p [%t] %37c %3x - %m%n1. 配置根Logger其语法为log4j.rootLogger [ level ] , appenderName, appenderName, …其中level 是日志记录的优先级分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。2. 配置日志信息输出目的地Appender其语法为log4j.appender.appenderName fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1 value1…log4j.appender.appenderName.option valueN其中Log4j提供的appender有以下几种org.apache.log4j.ConsoleAppender控制台org.apache.log4j.FileAppender文件org.apache.log4j.DailyRollingFileAppender每天产生一个日志文件org.apache.log4j.RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件org.apache.log4j.WriterAppender将日志信息以流格式发送到任意指定的地方(1).ConsoleAppender选项ThresholdWARN:指定日志消息的输出最低层次。ImmediateFlushtrue:默认值是true,意谓着所有的消息都会被立即输出。TargetSystem.err默认情况下是System.out,指定输出控制台(2).FileAppender 选项ThresholdWARN:指定日志消息的输出最低层次。ImmediateFlushtrue:默认值是true,意谓着所有的消息都会被立即输出。Filemylog.txt:指定消息输出到mylog.txt文件。Appendfalse:默认值是true,即将消息增加到指定文件中false指将消息覆盖指定的文件内容。(3).DailyRollingFileAppender 选项ThresholdWARN:指定日志消息的输出最低层次。ImmediateFlushtrue:默认值是true,意谓着所有的消息都会被立即输出。Filemylog.txt:指定消息输出到mylog.txt文件。Appendfalse:默认值是true,即将消息增加到指定文件中false指将消息覆盖指定的文件内容。DatePattern’.yyyy-ww:每周滚动一次文件即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下1)’.yyyy-MM: 每月2)’.yyyy-ww: 每周3)’.yyyy-MM-dd: 每天4)’.yyyy-MM-dd-a: 每天两次5)’.yyyy-MM-dd-HH: 每小时6)’.yyyy-MM-dd-HH-mm: 每分钟(4).RollingFileAppender 选项ThresholdWARN:指定日志消息的输出最低层次。ImmediateFlushtrue:默认值是true,意谓着所有的消息都会被立即输出。Filemylog.txt:指定消息输出到mylog.txt文件。Appendfalse:默认值是true,即将消息增加到指定文件中false指将消息覆盖指定的文件内容。MaxFileSize100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时将会自动滚动即将原来的内容移到mylog.log.1文件。MaxBackupIndex2:指定可以产生的滚动文件的最大数。3. 配置日志信息的布局其语法为log4j.appender.appenderName.layout fully.qualified.name.of.layout.classlog4j.appender.appenderName.layout.option1 value1…log4j.appender.appenderName.layout.option valueN其中Log4j提供的layout有以下几种org.apache.log4j.HTMLLayout以HTML表格形式布局org.apache.log4j.PatternLayout可以灵活地指定布局模式org.apache.log4j.SimpleLayout包含日志信息的级别和信息字符串org.apache.log4j.TTCCLayout包含日志产生的时间、线程、类别等等信息4、输出格式设置在配置文件中可以通过log4j.appender.A1.layout.ConversionPattern设置日志输出格式。参数%p: 输出日志信息优先级即DEBUGINFOWARNERRORFATAL,%d: 输出日志时间点的日期或时间默认格式为ISO8601也可以在其后指定格式比如%d{yyy MMM dd HH:mm:ss,SSS}输出类似2002年10月18日 221028921%r: 输出自应用启动到输出该log信息耗费的毫秒数%c: 输出日志信息所属的类目通常就是所在类的全名%t: 输出产生该日志事件的线程名%l: 输出日志事件的发生位置相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程以及在代码中的行数。举例Testlog4.main(TestLog4.java:10)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。%%: 输出一个”%”字符%F: 输出日志消息产生时所在的文件名称%L: 输出代码中的行号%m: 输出代码中指定的消息,产生的日志具体信息%n: 输出一个回车换行符Windows平台为”\r\n”Unix平台为”\n”输出日志信息换行可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如1)%20c指定输出category的名称最小的宽度是20如果category的名称小于20的话默认的情况下右对齐。2)%-20c:指定输出category的名称最小的宽度是20如果category的名称小于20的话”-”号指定左对齐。3)%.30c:指定输出category的名称最大的宽度是30如果category的名称大于30的话就会将左边多出的字符截掉但小于30的话也不会有空格。4)%20.30c:如果category的名称小于20就补空格并且右对齐如果其名称长于30字符就从左边交远销出的字符截掉。三、在程序中的使用在程序中使用Log4j之前首先要将commons-logging.jar和logging-log4j-1.2.9.jar导入到classpath中并将log4j.properties放于src根目录中。接下来就可以使用了。1.得到记录器使用Log4j第一步就是获取日志记录器这个记录器将负责控制日志信息。其语法为public static Logger getLogger( String name)通过指定的名字获得记录器如果必要的话则为这个名字创建一个新的记录器。Name一般取本类的名字比如static Logger logger Logger.getLogger ( ServerWithLog4j.class.getName () ) ;注推荐使用commons-logging结合log4j进行日志记录 private static Log logger LogFactory.getLog(Yourclass.class);2.插入记录信息格式化日志信息当上两个必要步骤执行完毕您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方其语法如下Logger.debug ( Object message ) ;Logger.info ( Object message ) ;Logger.warn ( Object message ) ;Logger.error ( Object message ) ;四、Log4j比较全面的配置LOG4J的配置之简单使它遍及于越来越多的应用中了Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。Java代码 log4j.rootLoggerDEBUG,CONSOLE,A1,im log4j.addivity.org.apachetrue #应用于控制台 log4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender log4j.appender.ThresholdDEBUG log4j.appender.CONSOLE.TargetSystem.out log4j.appender.CONSOLE.layoutorg.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern[framework]%d-%c-%-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.FILEorg.apache.log4j.FileAppender log4j.appender.FILE.Filefile.log log4j.appender.FILE.Appendfalse log4j.appender.FILE.layoutorg.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n #UsethislayoutforLogFactor5analysis #应用于文件回滚 log4j.appender.ROLLING_FILEorg.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.ThresholdERROR log4j.appender.ROLLING_FILE.Filerolling.log//文件位置,也可以用变量${java.home}、rolling.log log4j.appender.ROLLING_FILE.Appendtrue//true:添加false:覆盖 log4j.appender.ROLLING_FILE.MaxFileSize10KB//文件最大尺寸 log4j.appender.ROLLING_FILE.MaxBackupIndex1//备份数 log4j.appender.ROLLING_FILE.layoutorg.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n #应用于socket log4j.appender.SOCKETorg.apache.log4j.RollingFileAppender log4j.appender.SOCKET.RemoteHostlocalhost log4j.appender.SOCKET.Port5001 log4j.appender.SOCKET.LocationInfotrue #SetupforLogFacter5 log4j.appender.SOCKET.layoutorg.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 #LogFactor5Appender log4j.appender.LF5_APPENDERorg.apache.log4j.lf5.LF5Appender log4j.appender.LF5_APPENDER.MaxNumberOfRecords2000 #发送日志给邮件 log4j.appender.MAILorg.apache.log4j.net.SMTPAppender log4j.appender.MAIL.ThresholdFATAL log4j.appender.MAIL.BufferSize10 log4j.appender.MAIL.Fromwebwww.wuset.com log4j.appender.MAIL.SMTPHostwww.wusetu.com log4j.appender.MAIL.SubjectLog4JMessage log4j.appender.MAIL.Towebwww.wusetu.com log4j.appender.MAIL.layoutorg.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n #用于数据库 log4j.appender.DATABASEorg.apache.log4j.jdbc.JDBCAppender log4j.appender.DATABASE.URLjdbc:mysql://localhost:3306/test log4j.appender.DATABASE.drivercom.mysql.jdbc.Driver log4j.appender.DATABASE.userroot log4j.appender.DATABASE.password log4j.appender.DATABASE.sqlINSERTINTOLOG4J(Message)VALUES(’[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n’) log4j.appender.DATABASE.layoutorg.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n log4j.appender.A1org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.FileSampleMessages.log4j log4j.appender.A1.DatePatternyyyyMMdd-HH’.log4j’ log4j.appender.A1.layoutorg.apache.log4j.xml.XMLLayout #自定义Appender log4j.appender.imnet.cybercorlin.util.logger.appender.IMAppender log4j.appender.im.hostmail.cybercorlin.net log4j.appender.im.usernameusername log4j.appender.im.passwordpassword log4j.appender.im.recipientcorlincybercorlin.net log4j.appender.im.layoutorg.apache.log4j.PatternLayout log4j.appender.im.layout.ConversionPattern[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n