2024年9月log4j 配置(如何编写log4j.properties文件,配置日志信息)
⑴logj配置(如何编写logj.properties文件,配置日志信息
⑵然后可以通过配置异步的appender或Logger来实现异步日志:或动态修改日志级别是一个很实用的功能,配置日志信息logj配置简要分析logj日志配置详解如何编写logj.properties文件,它们分别是logj自身组件的日志级别以及重新刷新配置文件的时间,配置日志信息###把日志信息输出到控制台###logj.appender.stdout=.apache.logj.ConsoleAppender//日志信息将写到控制台logj.appender.stdout.Target=System.out//信息打印到System.out上logj.appender.stdout.layout=.apache.logj.PatternLayoutlogj.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%m%n//指定输出格式:显示日期和log信息###把日志信息输出到文件:ap.log###logj.appender.file=.apache.logj.FileAppender//日志信息将写到文件中logj.appender.file.File=ap.log//指定日志输出的文件名logj.appender.file.layout=.apache.logj.PatternLayoutlogj.appender.file.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%l%m%n//指定输出格式:显示日期,配置monitorInterval可以通过修改配置文件来改变日志配置,logj的官方文档建议记录程序行为日志异步日志,java是java.util的父级,不同的appender也有不同的属性和配置。
⑶如何编写logj.properties文件,配置日志信息
⑷第一步:在工程中加入logj所使用的jar文件:项目》属性:弹出项目的属性窗口:Java构建路径》?库》?添加外部JAR:弹出选择JAR的窗口:通过选择JAR的窗口,找到logj-..x.jar,并确认:回到项目的属性窗口,点击确定第二步:创建logj.properties文件:选择欲使用logj的项目》?右键点击src》?新建》?其他:弹出选择向导窗口:在选择向导窗口中,选择常规?》文件?》下一步:弹出新建文件的窗口:在新建文件窗口中,输入文件名logj.properties?完成:创建工作结束第三步:使用logj记录日志信息import.apache.logj.Logger;publilassLogj{publicstaticvoidmain(Stringargs){Loggerlogger=Logger.getLogger(ApTeacherLogj.class.getName());//获取日志记录器,这个记录器将负责控制日志信息try{logger.debug(“设置教员的编号。“);//使用Logger对象的debug、info方法输出日志信息}catch(IllegalArgumentExceptionex){logger.info(ex.getMessage());//使用Logger对象的debug、info方法输出日志信息}}}第四步:编写logj.properties文件,配置日志信息###把日志信息输出到控制台###logj.appender.stdout=.apache.logj.ConsoleAppender//日志信息将写到控制台logj.appender.stdout.Target=System.out//信息打印到System.out上logj.appender.stdout.layout=.apache.logj.PatternLayoutlogj.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%m%n//指定输出格式:显示日期和log信息###把日志信息输出到文件:ap.log###logj.appender.file=.apache.logj.FileAppender//日志信息将写到文件中logj.appender.file.File=ap.log//指定日志输出的文件名logj.appender.file.layout=.apache.logj.PatternLayoutlogj.appender.file.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%l%m%n//指定输出格式:显示日期,日志发生位置和日志信息###设置优先级别、以及输出源###logj.rootLogger=debug,stdout,file//设置优先级别为debug、日志被输出到多个输出源注:优先级从高到低分别是ERROR、WARN、INFO、DEBUG在此处,如果优先级别设为info,那么使用debug方法打印的日志信息将不被输出
⑸logj配置简要分析
⑹对于做后端的同学来说,log是分析bug、查找问题不可或缺的工具,好的日志配置将使我们的开发工作如虎添翼。把视线聚焦到java,常用的日志工具有logj,logj以及logback等,其中logj功能较为强大,运行效率也较高,我们就来用一个例子看一看logj的配置思路,下面就是这个配置文件:我们看到,Configuration有个属性status和monitorInterval,它们分别是logj自身组件的日志级别以及重新刷新配置文件的时间,通过配置status可以看到logj相关的日志,配置monitorInterval可以通过修改配置文件来改变日志配置。从上面的logj.xml配置文件中,我们可以看到logj的配置文件中主要分为块,一块为appender,描述了如何记录日志,另外一部分是logconfig,记录了哪种日志对应哪种级别。而不同的LogConfig之间其实是有继承关系的,子LogConfig会继承parent的属性,而所有LogConfig都继承自RootLogConfig。所以即使只配置了rootlogger,你一样可以在任何地方通过LoggerFactory.getLogger获取一个logger对象,记录日志。那么日志之间的继承关系是由什么决定的呢?看看上面的配置文件中root以外的个logConfig,只有个配置:日志级别,name以及appender,从直觉上看应当是name最可能决定了LogConfig的继承关系,其实也正是如此:.foo是.foo.Bar的父级;java是java.util的父级,是java.util.vector的祖先(注意name区分大小写。理解了这一点,我们就能理清logj配置的思路:先配置一个root,让所有需要使用日志的logger继承,然后对有特别需要的logger进行特殊的配置,比如我们希望.springframework包只记录error以及warn级别的log,再比如,我们希望能显示mybatis执行的sql的日志,都可以进行个性化的配置。appender是LogConfig的重要组成部分,一个LogConfig可以使用多个appender,一个appender也可以被多个LogConfig使用,appender多种多样,不同的appender也有不同的属性和配置,难以一一阐述,需要使用时可以直接查看文档来进行个性化配置。不过就filters可以单独拿出来讨论一下。filter有两个重要属性onMatch和onMismatch。可以有DENY、AEPT或NEUTRAL配置,DENY说明不由当前appender处理,AEPT说明由当前filter处理,而NEUTRAL说明如果按顺序还有其他filter则由其他filter处理,如果当前filter已经是最后一个filter,则由当前appender处理。logj的官方文档建议记录程序行为日志异步日志,效率更高。因为异步日志使用的是无锁技术,所以需要引入Disruptor。然后可以通过配置异步的appender或Logger来实现异步日志:或动态修改日志级别是一个很实用的功能,关于如果动态修改日志级别,请参考美团的一篇文章:日志级别动态调整——小工具解决大问题以上就是对logj的配置的一些总结,更多信息请关注官方文档。
⑺logj日志配置详解
⑻################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################logj.rootLogger=ALL,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDBlogj.appender.systemOut=.apache.logj.ConsoleAppenderlogj.appender.systemOut.layout=.apache.logj.PatternLayoutlogj.appender.systemOut.layout.ConversionPattern=%n%m%nlogj.appender.systemOut.Threshold=DEBUGlogj.appender.systemOut.ImmediateFlush=TRUElogj.appender.systemOut.Target=System.outlogj.appender.logFile=.apache.logj.FileAppenderlogj.appender.logFile.layout=.apache.logj.PatternLayoutlogj.appender.logFile.layout.ConversionPattern=%n%m%nlogj.appender.logFile.Threshold=DEBUGlogj.appender.logFile.ImmediateFlush=TRUElogj.appender.logFile.Append=TRUElogj.appender.logFile.File=(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values(’Struts’,’%d{yyyy-MM-ddHH:mm:ss}’,’%p’,’%c’,’%F’,’%t’,’%L’,’%l’,’%m’)