当前位置: 首页 > news >正文

杭州网站专业制作成都六度网站建设

杭州网站专业制作,成都六度网站建设,一线视频免费观看,兼职网站开发需求日志管理 作用#xff1a; 设置日志级别#xff0c;决定什么日志信息应该被输出、什么日志信息应该被忽略。 基本工具 见的日志管理用具有:JDK logging#xff08;配置文件#xff1a;logging.properties#xff09; 和log4j(配置文件#xff1a;log4j.properties) 。…日志管理 作用 设置日志级别决定什么日志信息应该被输出、什么日志信息应该被忽略。 基本工具 见的日志管理用具有:JDK logging配置文件logging.properties 和log4j(配置文件log4j.properties) 。 日志工具有很多应用程序这个框架用这个另外一个框架用另外一个日志。配置日志就很麻烦。 各自日志提供各自的 Self4j这个工具提供一个接口用来管理日志工具加那个日志的jar包就使用哪个日志。 SLF4J即简单日志门面Simple Logging Facade for Java不是具体的日志解决方案它只服务于各种各样的日志系统。按照官方的说法SLF4J是一个用于日志系统的简单Facade允许最终用户在部署其应用时使用其所希望的日志系统。实际上SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上SLF4J有点类似JDBC不过比JDBC更简单在JDBC中你需要指定驱动程序而在使用SLF4J的时候不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样SLF4J提供了统一的记录日志的接口只要按照其提供的方法记录即可最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现因此可以在应用中灵活切换日志系统。如果你开发的是类库或者嵌入式组件那么就应该考虑采用SLF4J因为不可能影响最终用户选择哪种日志系统。在另一方面如果是一个简单或者独立的应用确定只有一种日志系统那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用JDK 1.4 Logging的用户时面对成千上万的log4j调用的修改相信这绝对不是一件轻松的事情。但是如果开始便使用SLF4J那么这种转换将是非常轻松的事情。 log4j 下载jar包log4j-1.2.17.jar Log4j由三个重要的组件构成日志信息的优先级日志信息的输出目的地日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG分别用来指定这条日志信息的重要程度日志信息的输出目的地指定了日志将打印到控制台还是文件中而输出格式则控制了日志信息的显 示内容。 基本使用测试 配置文件 log4j.properties log4j.rootLoggertrace,Console,Filelogfile //注意包含了很多 ## mina 设置日志发送到控制台 log4j.appender.Consoleorg.apache.log4j.ConsoleAppender log4j.appender.Console.layoutorg.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p %c{1} %x - %m%n ## File 设置日志输出到指定大小的文件 log4j.appender.File org.apache.log4j.RollingFileAppender log4j.appender.File.ThresholdDEBUG //不继承父类的 log4j.appender.File.File./log/mina.log //路径 log4j.appender.File.MaxFileSize5120KB //大小 log4j.appender.File.MaxBackupIndex10 log4j.appender.File.layoutorg.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern[VAMS][%d] %p | %m | [%t] %C.%M(%L)%n ## logFile 设置日志输出到指定路劲 log4j.appender.logFileorg.apache.log4j.FileAppender log4j.appender.logFile.ThresholdDEBUG log4j.appender.logFile.ImmediateFlushtrue 表示所有消息都会被立即输出 log4j.appender.logFile.Appendtrue rue表示消息增加到指定文件中默认就是true log4j.appender.logFile.File./log/test.log log4j.appender.logFile.layoutorg.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n log4j.appender.logFile.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n测试代码 import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;public class testLogger {public static void main(String[] args) {String path System.getProperty(user.dir);PropertyConfigurator.configure(path /src/log4j.properties); //读取配置文件路径Logger logger Logger.getLogger(testLogger.class); //加载本类logger.debug( debug ); //设置此处debug级别输出的内容logger.error( error ); //设置此处error级别输出的内容logger.trace( trace );logger.info( info );logger.warn( warn );} } 测试结果 2021-11-24 16:43:01,788 DEBUG testLogger - debug 2021-11-24 16:43:01,791 ERROR testLogger - error 2021-11-24 16:43:01,791 TRACE testLogger - trace 2021-11-24 16:43:01,791 INFO testLogger - info 2021-11-24 16:43:01,791 WARN testLogger - warn 先有一个结果然后对整个代码进行详细的解析 首先 配置方式properties方式 对于日志的配置本质上要解决定义问题输出什么输出在哪里格式是什么由此分别对这三个问题进行配置。 配置根Logger 其语法为 log4j.rootLogger [ level ] , appenderName, appenderName, … 从这里可以得出两个信息 1、level 是日志记录的优先级分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者定义的级别。通过在这里定义的级别可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别则应用程序中所有DEBUG级别的日志信息将不被打印出来。 2、appenderName是定义的输出位置的名称这里代表可以有多个位置与名称。 例如我们把INFO层级以及以上的信息输出到Console和File; 即输出到控制台和本地硬盘文件其中 Console 与 File 都是自定义命名。 log4j.rootLoggerINFO, Console ,File #Console log4j.appender.Consoleorg.apache.log4j.ConsoleAppender log4j.appender.Console.layoutorg.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern%d [%t] %-5p [%c] - %m%n#File log4j.appender.File org.apache.log4j.FileAppender log4j.appender.File.File d://log4j2.log //自己的硬盘路径 log4j.appender.File.layout org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern %d [%t] %-5p [%c] - %m%n这一句设置以为着所有的log都输出 如果为log4j.rootLoggerWARN, 则意味着只有WARN,ERROR,FATAL被输出DEBUG,INFO将被屏蔽掉 配置输出方式 org.apache.log4j.RollingFileAppender(滚动文件自动记录最新日志) org.apache.log4j.ConsoleAppender (控制台) org.apache.log4j.FileAppender (文件) org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件) org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)在上述介绍的输出位置中已经进行初步了解对于日志的输出位置接下来将会具体了解几种输出位置的定义方式。 首先需要知道配置输出位置的键值对应的来源。 对于键格式为log4j.appender.appenderName(rootLogger里自定义名字) 对于值格式Log4j提供的appender有以下几种 org.apache.log4j.ConsoleAppender控制台方式 name:指定Appender的名字. target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT. PatternLayout:输出格式不设置默认为:%m%n. org.apache.log4j.FileAppender文件 name:指定Appender的名字. fileName:指定输出日志的目的文件带全路径的文件名. PatternLayout:输出格式不设置默认为:%m%n. org.apache.log4j.RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件 name:指定Appender的名字.     fileName:指定输出日志的目的文件带全路径的文件名.     PatternLayout:输出格式不设置默认为:%m%n.     filePattern:指定新建日志文件的名称格式.     Policies:指定滚动日志的策略就是什么时候进行新建日志文件输出日志.    TimeBasedTriggeringPolicy:Policies子节点基于时间的滚动策略interval属性用来指定多久滚动一次默认是1 hour。modulatetrue用来调整时间比如现在是早上3aminterval是4那么第一次滚动是在4am接着是8am12am…而不是7am.     SizeBasedTriggeringPolicy:Policies子节点基于指定文件大小的滚动策略size属性用来定义每个日志文件的大小.     DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的创建新的(通过max属性),默认是7个文件。 org.apache.log4j.DailyRollingFileAppender每天产生一个日志文件 org.apache.log4j.WriterAppender将日志信息以流格式发送到任意指定的地方 配置输出格式 Layout日志输出格式Log4j提供的layout有以下几种 org.apache.log4j.HTMLLayout以HTML表格形式布局 org.apache.log4j.PatternLayout可以灵活地指定布局模式 org.apache.log4j.SimpleLayout包含日志信息的级别和信息字符串 org.apache.log4j.TTCCLayout包含日志产生的时间、线程、类别等等信息 (1)HTMLLayout选项 LocationInfotrue输出java文件名称和行号默认值是false。 TitleMy Logging 默认值是Log4J Log Messages。 (2)PatternLayout选项 ConversionPattern%m%n设定以怎样的格式显示消息。 格式化符号说明 %p输出日志信息的优先级即DEBUGINFOWARNERRORFATAL。 %d输出日志时间点的日期或时间默认格式为ISO8601也可以在其后指定格式如%d{yyyy/MM/dd HH:mm:ss,SSS}。 %r输出自应用程序启动到输出该log信息耗费的毫秒数。 %t输出产生该日志事件的线程名。 %l输出日志事件的发生位置相当于%c.%M(%F:%L)的组合包括类全名、方法、文件名以及在代码中的行数。例如test.TestLog4j.main(TestLog4j.java:10)。 %c输出日志信息所属的类目通常就是所在类的全名。 %M输出产生日志信息的方法名。 %F输出日志消息产生时所在的文件名称。 %L:输出代码中的行号。 %m:输出代码中指定的具体日志信息。 %n输出一个回车换行符Windows平台为rnUnix平台为n。 %x输出和当前线程相关联的NDC(嵌套诊断环境)尤其用到像java servlets这样的多客户多线程的应用中。 %%输出一个%字符。 另外还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如 c指定输出category的名称最小的长度是20如果category的名称长度小于20的话默认的情况下右对齐。 2)%-20c-号表示左对齐。 3)%.30c指定输出category的名称最大的长度是30如果category的名称长度大于30的话就会将左边多出的字符截掉但小于30的话也不会补空格。 log4j 的几种配置方式 Log4j配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。 log4j.rootLoggerDEBUG,console,dailyFile,im log4j.additivity.org.apachetrue # 控制台(console) log4j.appender.consoleorg.apache.log4j.ConsoleAppender log4j.appender.console.ThresholdDEBUG log4j.appender.console.ImmediateFlushtrue log4j.appender.console.TargetSystem.err log4j.appender.console.layoutorg.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n# 日志文件(logFile) log4j.appender.logFileorg.apache.log4j.FileAppender log4j.appender.logFile.ThresholdDEBUG log4j.appender.logFile.ImmediateFlushtrue log4j.appender.logFile.Appendtrue log4j.appender.logFile.FileD:/logs/log.log4j log4j.appender.logFile.layoutorg.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n # 回滚文件(rollingFile) log4j.appender.rollingFileorg.apache.log4j.RollingFileAppender log4j.appender.rollingFile.ThresholdDEBUG log4j.appender.rollingFile.ImmediateFlushtrue log4j.appender.rollingFile.Appendtrue log4j.appender.rollingFile.FileD:/logs/log.log4j log4j.appender.rollingFile.MaxFileSize200KB log4j.appender.rollingFile.MaxBackupIndex50 log4j.appender.rollingFile.layoutorg.apache.log4j.PatternLayout log4j.appender.rollingFile.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n # 定期回滚日志文件(dailyFile) log4j.appender.dailyFileorg.apache.log4j.DailyRollingFileAppender log4j.appender.dailyFile.ThresholdDEBUG log4j.appender.dailyFile.ImmediateFlushtrue log4j.appender.dailyFile.Appendtrue log4j.appender.dailyFile.FileD:/logs/log.log4j log4j.appender.dailyFile.DatePattern.yyyy-MM-dd log4j.appender.dailyFile.layoutorg.apache.log4j.PatternLayout log4j.appender.dailyFile.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n # 应用于socket log4j.appender.socketorg.apache.log4j.RollingFileAppender log4j.appender.socket.RemoteHostlocalhost log4j.appender.socket.Port5001 log4j.appender.socket.LocationInfotrue # Set up for Log Factor 5 log4j.appender.socket.layoutorg.apache.log4j.PatternLayout log4j.appender.socket.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n # Log Factor 5 Appender 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.From xxxmail.com log4j.appender.mail.SMTPHostmail.com log4j.appender.mail.SubjectLog4J Message log4j.appender.mail.To xxxmail.com log4j.appender.mail.layoutorg.apache.log4j.PatternLayout log4j.appender.mail.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %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.sqlINSERT INTO LOG4J (Message) VALUES([%-5p] %d(%r) -- [%t] %l: %m %x %n) log4j.appender.database.layoutorg.apache.log4j.PatternLayout log4j.appender.database.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %n# 自定义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 corlincybercorlin.net log4j.appender.im.layoutorg.apache.log4j.PatternLayout log4j.appender.im.layout.ConversionPattern[%-5p] %d(%r) -- [%t] %l: %m %x %nlog4j.xml xml方式配置 如下的配置文件仅列出了三种文件输出目的地的配置他们相对比较常用其中值得特别注意的是记录器的 name 和 additivity 这两个属性的作用详情往下看注解最好自己试试 例一 ?xml version1.0 encodingUTF-8? !DOCTYPE log4j:configuration SYSTEM log4j.dtdlog4j:configuration!-- 将日志信息输出到控制台 --appender nameConsoleAppender classorg.apache.log4j.ConsoleAppender!-- 设置日志输出的样式 --layout classorg.apache.log4j.PatternLayout!-- 设置日志输出的格式 --param nameConversionPattern value[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n //layout!--过滤器设置输出的级别--filter classorg.apache.log4j.varia.LevelRangeFilter!-- 设置日志输出的最小级别 --param namelevelMin valueWARN /!-- 设置日志输出的最大级别 --param namelevelMax valueERROR /!-- 设置日志输出的xxx默认是false --param nameAcceptOnMatch valuetrue //filter/appender!-- 将日志信息输出到文件但是当文件的大小达到某个阈值的时候日志文件会自动回滚 --appender nameRollingFileAppender classorg.apache.log4j.RollingFileAppender!-- 设置日志信息输出文件全路径名 --param nameFile valueD:/log4j/RollingFileAppender.log /!-- 设置是否在重新启动服务时在原有日志的基础添加新日志 --param nameAppend valuetrue /!-- 设置保存备份回滚日志的最大个数 --param nameMaxBackupIndex value10 /!-- 设置当日志文件达到此阈值的时候自动回滚单位可以是KBMBGB默认单位是KB --param nameMaxFileSize value10KB /!-- 设置日志输出的样式 --layout classorg.apache.log4j.PatternLayout!-- 设置日志输出的格式 --param nameConversionPattern value[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n //layout/appender!-- 将日志信息输出到文件可以配置多久产生一个新的日志信息文件 --appender nameDailyRollingFileAppender classorg.apache.log4j.DailyRollingFileAppender!-- 设置日志信息输出文件全路径名 --param nameFile valueD:/log4j/DailyRollingFileAppender.log /!-- 设置日志每分钟回滚一次即产生一个新的日志文件 --param nameDatePattern value.yyyy-MM-dd-HH-mm.log /!-- 设置日志输出的样式 --layout classorg.apache.log4j.PatternLayout!-- 设置日志输出的格式 --param nameConversionPattern value[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n //layout/appender!--注意1当additivityfalse时root中的配置就失灵了不遵循缺省的继承机制2logger中的name非常重要它代表记录器的包的形式有一定的包含关系试验表明2-1当定义的logger的name同名时只有最后的那一个才能正确的打印日志2-2当对应的logger含有包含关系时比如nametest.log4j.test8 和 nametest.log4j.test8.UseLog4j则2-1的情况是一样的2-3logger的name表示所有的包含在此名的所有记录器都遵循同样的配置name的值中的包含关系是指记录器的名称哟注意啦3logger中定义的level和appender中的filter定义的level的区间取交集4如果appender中的filter定义的 levelMin levelMax 则打印不出日志信息--!-- 指定logger的设置additivity指示是否遵循缺省的继承机制--logger nametest.log4j.test8.UseLog4j additivityfalselevel value WARN/appender-ref refDailyRollingFileAppender//logger!--指定logger的设置additivity指示是否遵循缺省的继承机制 --logger nametest.log4j.test8.UseLog4j_ additivityfalselevel value ERROR/appender-ref refRollingFileAppender//logger!-- 根logger的设置--rootlevel value INFO/appender-ref refConsoleAppender/!--appender-ref refDailyRollingFileAppender/--/root/log4j:configuration例二 ?xml version1.0 encodingUTF-8? !DOCTYPE log4j:configuration SYSTEM log4j.dtd log4j:configuration xmlns:log4jhttp://jakarta.apache.org/log4j/ appender namemyConsole classorg.apache.log4j.ConsoleAppenderlayout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n //layout!--过滤器设置输出的级别-- filter classorg.apache.log4j.varia.LevelRangeFilterparam namelevelMin valuedebug /param namelevelMax valuewarn /param nameAcceptOnMatch valuetrue //filter/appenderappender namemyFile classorg.apache.log4j.RollingFileAppenderparam nameFile valueD:/output.log /!-- 设置日志输出文件名 --!-- 设置是否在重新启动服务时在原有日志的基础添加新日志 --param nameAppend valuetrue /param nameMaxBackupIndex value10 /layout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value%p (%c:%L)- %m%n //layout/appenderappender nameactivexAppender classorg.apache.log4j.DailyRollingFileAppenderparam nameFile valueE:/activex.log /param nameDatePattern value.yyyy-MM-dd.log /layout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n //layout/appender!-- 指定logger的设置additivity指示是否遵循缺省的继承机制--logger namecom.runway.bssp.activeXdemo additivityfalsepriority value info/appender-ref refactivexAppender //logger!-- 根logger的设置--rootpriority value debug/appender-ref refmyConsole/appender-ref refmyFile//root/log4j:configurationxml节点参数 xml declaration and DTD xml配置文件的头部包括两个部分xml声明和DTD声明。头部的格式如下 ?xml version1.0 encodingUTF-8 ? log4j:configuration (root element) xmlns:log4j [#FIXED attribute] : 定义log4j的名字空间取定值http://jakarta.apache.org/log4j/ appender [* child] : 一个appender子元素定义一个日志输出目的地 logger [* child] : 一个logger子元素定义一个日志写出器 root [? child] : root子元素定义了root logger appender appender元素定义一个日志输出目的地。 name [#REQUIRED attribute] : 定义appender的名字以便被后文引用 class [#REQUIRED attribute] : 定义appender对象所属的类的全名 param [* child] : 创建appender对象时传递给类构造方法的参数 layout [? child] : 该appender使用的layout对象 layout layout元素定义与某一个appender相联系的日志格式化器。 class [#REQUIRED attribute] : 定义layout对象所属的类的全名 param [* child] : 创建layout对象时传递给类构造方法的参数 logger logger元素定义一个日志输出器。 name [#REQUIRED attribute] : 定义logger的名字以便被后文引用 additivity [#ENUM attribute] : 取值为true默认或者false是否继承父logger的属性 level [? child] : 定义该logger的日志级别 appender-ref [* child] : 定义该logger的输出目的地 root root基础日志配置、包括使用的输出器、日志级别等 param [* child] : 创建root logger对象时传递给类构造方法的参数 level [? child] : 定义root logger的日志级别 appender-ref [* child] : 定义root logger的输出目的地 category category自定义输出配置 logger、category 用法一致可以配置通过 additivity 属性标记是否集成 root 配置 以上三个总结 !--自定义日志输出配置additivity是否继承 root 配置--category nametestCategoryLogger additivityfalselevel valueINFO/levelappender-ref reftestCategoryAppender/appender-refappender-ref refstdout/appender-ref/category!--自定义日志输出配置additivity是否继承 root 配置--logger nametestLogger additivityfalse!--级别--level valueINFO/level!--输出器--appender-ref reftestAppender/appender-refappender-ref refstdout/appender-ref/logger!--基础日志输出配置--rootlevel valueINFO/!--输出器--appender-ref refstdout/appender-ref reffileAppender/level level元素定义logger对象的日志级别。 class [#IMPLIED attribute] : 定义level对象所属的类默认情况下是org.apache.log4j.Level类 value [#REQUIRED attribute] : 为level对象赋值。可能的取值从小到大依次为all、“debug”、“info”、“warn”、“error”、“fatal和off”。当值为off时表示没有任何日志信息被输出 param [* child] : 创建level对象时传递给类构造方法的参数 appender-ref appender-ref元素引用一个appender元素的名字为logger对象增加一个appender。 ref [#REQUIRED attribute] : 一个appender元素的名字的引用 appender-ref元素没有子元素 param param元素在创建对象时为类的构造方法提供参数。它可以成为appender、layout、filter、errorHandler、level、categoryFactory和root等元素的子元素。 name and value [#REQUIRED attributes] : 提供参数的一组名值对 param元素没有子元素 在xml文件中配置appender和layout 创建不同的Appender对象或者不同的Layout对象要调用不同的构造方法。可以使用param子元素来设定不同的参数值。 创建ConsoleAppender对象 ConsoleAppender的构造方法不接受其它的参数。 … … … … layout … … … ... ... ... ... #### 创建FileAppender对象 可以为FileAppender类的构造方法传递两个参数File表示日志文件名Append表示如文件已存在是否把日志追加到文件尾部可能取值为true和false默认。 … … … … ... ... ... ... 创建RollingFileAppender对象 除了File和Append以外还可以为RollingFileAppender类的构造方法传递两个参数MaxBackupIndex备份日志文件的个数默认是1个MaxFileSize表示日志文件允许的最大字节数默认是10M。 … … … … 依赖 dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.5/version /dependency dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion2.5/version /dependency log4j和log4j 2的包路径是不同的Apache为了区分包路径都更新了这样大家甚至可以在一个项目中使用2个版本的日志输出哦 log4j想要生效我们需要在web.xml中进行配置 log4j2就比较简单以maven工程为例我们只需要把log4j2.xml放到工程resource目录下就行了。大家记住一个细节点是log4j2.xml而不是log4j.xmlxml名字少个2都不行 和log4j相比主要有这么一些变化 首先整体结构上变化很大appender、logger都被集中到了各自的一个根节点下。 xml各节点的名称也采用了新设计名称直接就是有用信息不再是之前appender xxx“xxx”, param xxxxxx的形式。 然后一些属性包括fileName等只能作为节点属性配置不能像log4j那样配置成子节点。 此外log4j2归档时支持压缩在RollingFile节点的filePattern属性里将文件名后缀写成gz,zip等压缩格式log4j2会自动选择相应压缩算法进行压缩。 log4j2的文件格式 (1).根节点 Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger)。 status用来指定log4j本身的打印日志的级别. monitorinterval用于指定log4j自动重新配置的监测间隔时间单位是s,最小是5s. (2).Appenders节点 常见的有三种子节点:Console、RollingFile、File. Console节点用来定义输出到控制台的Appender. name:指定Appender的名字. target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT. Patt ernLayout:输出格式不设置默认为:%m%n.   File节点用来定义输出到指定位置的文件的Appender.     name:指定Appender的名字.     fileName:指定输出日志的目的文件带全路径的文件名.     PatternLayout:输出格式不设置默认为:%m%n.   RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.     name:指定Appender的名字.     fileName:指定输出日志的目的文件带全路径的文件名.     PatternLayout:输出格式不设置默认为:%m%n.     filePattern:指定新建日志文件的名称格式.     Policies:指定滚动日志的策略就是什么时候进行新建日志文件输出日志.     TimeBasedTriggeringPolicy:Policies子节点基于时间的滚动策略interval属性用来指定多久滚动一次默认是1 hour。modulatetrue用来调整时间比如现在是早上3aminterval是4那么第一次滚动是在4am接着是8am12am…而不是7am.     SizeBasedTriggeringPolicy:Policies子节点基于指定文件大小的滚动策略size属性用来定义每个日志文件的大小.     DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的创建新的(通过max属性)。 ThresholdFilter属性onMatch表示匹配设定的日志级别后是DENY还是ACCEPTonMismatch表示不匹配设定的日志级别是DENY还是ACCEPT还是NEUTRAL (3).Loggers节点 常见的有两种:Root和Logger. Root节点用来指定项目的根日志如果没有单独指定Logger那么就会默认使用该Root日志输出 level:日志输出级别共有8个级别按照从低到高为All Trace Debug Info Warn Error Fatal OFF. Logger节点用来单独指定日志的形式比如要为指定包下的class指定不同的日志级别等。     level:日志输出级别共有8个级别按照从低到高为All Trace Debug Info Warn Error Fatal OFF.     name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.     AppenderRefLogger的子节点用来指定该日志输出到哪个Appender,如果没有指定就会默认继承自Root.如果指定了那么会在指定的这个Appender和Root的Appender中都会输出此时我们可以设置Logger的additivityfalse只在自定义的Appender中进行输出。 (4).关于日志level.   共有8个级别按照从低到高为All Trace Debug Info Warn Error Fatal OFF.   All:最低等级的用于打开所有日志记录.   Trace:是追踪就是程序推进以下你就可以写个trace输出所以trace应该会特别多不过没关系我们可以设置最低日志级别不让他输出.   Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.   Info:消息在粗粒度级别上突出强调应用程序的运行过程.   Warn:输出警告及warn以下级别的日志.   Error:输出错误信息日志.   Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.   OFF:最高等级的用于关闭所有日志记录.   程序会打印高于或等于所设置级别的日志设置的日志等级越高打印出来的日志就越少。 配置参数解释 %d{HH:mm:ss.SSS} 表示输出到毫秒的时间 %t 输出当前线程名称 例子一 ?xml version1.0 encodingUTF-8?!--日志级别以及优先级排序: OFF FATAL ERROR WARN INFO DEBUG TRACE ALL --!--Configuration后面的status这个用于设置log4j2自身内部的信息输出可以不设置当设置成trace时你会看到log4j2内部各种详细输出--!--monitorIntervalLog4j能够自动检测修改配置 文件和重新配置本身设置间隔秒数--configuration statusWARN monitorInterval30!--先定义所有的appender--appenders!--这个输出控制台的配置--console nameConsole targetSYSTEM_OUT!--输出日志的格式--PatternLayout pattern[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n//console!--文件会打印出所有信息这个log每次运行程序会自动清空由append属性决定这个也挺有用的适合临时测试用--File namelog fileNamelog/test.log appendfalsePatternLayout pattern%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n//File!-- 这个会打印出所有的info及以下级别的信息每次大小超过size则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩作为存档--RollingFile nameRollingFileInfo fileName${sys:user.home}/logs/info.logfilePattern${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch-- ThresholdFilter levelinfo onMatchACCEPT onMismatchDENY/PatternLayout pattern[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n/PoliciesTimeBasedTriggeringPolicy/SizeBasedTriggeringPolicy size100 MB//Policies/RollingFileRollingFile nameRollingFileWarn fileName${sys:user.home}/logs/warn.logfilePattern${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.logThresholdFilter levelwarn onMatchACCEPT onMismatchDENY/PatternLayout pattern[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n/PoliciesTimeBasedTriggeringPolicy/SizeBasedTriggeringPolicy size100 MB//Policies!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 --DefaultRolloverStrategy max20//RollingFileRollingFile nameRollingFileError fileName${sys:user.home}/logs/error.logfilePattern${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.logThresholdFilter levelerror onMatchACCEPT onMismatchDENY/PatternLayout pattern[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n/PoliciesTimeBasedTriggeringPolicy/SizeBasedTriggeringPolicy size100 MB//Policies/RollingFile/appenders!--然后定义logger只有定义了logger并引入的appenderappender才会生效--loggers!--过滤掉spring和mybatis的一些无用的DEBUG信息--logger nameorg.springframework levelINFO/loggerlogger nameorg.mybatis levelINFO/loggerroot levelallappender-ref refConsole/appender-ref refRollingFileInfo/appender-ref refRollingFileWarn/appender-ref refRollingFileError//root/loggers/configuration例子二 ?xml version1.0 encodingUTF-8? !--status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出。因此我们直接设置成OFF-- Configuration statusOFF!-- 配置输出端 --Appenders!-- 输出到控制台 --Console nameConsole targetSYSTEM_OUTPatternLayout pattern[%-level]%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %logger{36} - %msg%n//Console!-- 输出到文件 --!--name: 输出端的名字fileName: 指定当前日志文件的位置和文件名称filePattern: 指定当发生自动封存日志时文件的转移和重命名规则这个filePatten结合下面的TimeBasedTriggeringPolicy一起使用可以实现控制日志按天生成文件.自动封存日志的策略可以设置时间策略和文件大小策略见下面的Policies配置时间策略文件名_%d{yyyy-MM-dd}_%i.log 这里%d表示自动封存日志的单位是天如果下面的TimeBasedTriggeringPolicy的interval设为1,表示每天自动封存日志一次;那么就是一天生成一个文件。文件大小策略如果你设置了SizeBasedTriggeringPolicy的size的话超过了这个size就会再生成一个文件这里的%i用来区分的%d{yyyy-MM-dd}会自动替代为日期如2017-06-30--RollingFile nameRollingFileInfo fileName/log/guitool_info.logfilePattern/log/%d{yyyy-MM-dd}/guitool_%d{yyyy-MM-dd}_%i.log!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch --ThresholdFilter levelinfo onMatchACCEPT onMismatchDENY/!-- 输出的格式 --PatternLayout pattern[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n/!--Policies自动封存日志策略表示日志什么时候应该产生新日志可以有时间策略和大小策略等并且只有满足一个策略就好生成一个新的文件。这里使用的是时间和大小都使用了每隔1天产生新的日志文件如果果今天的文件大小到了设定的size则会新生成一个文件上面的%i就表示今天的第几个文件--PoliciesTimeBasedTriggeringPolicy interval1/SizeBasedTriggeringPolicy size20MB//Policies!--DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20--DefaultRolloverStrategy max20//RollingFile/Appenders!-- 配置Loggers --Loggers!--Logger 用于指定部分包的日志级别日志级别局部的会覆盖全局的比如这里hibernate的级别设为debug而控制台没有设级别那么控制台会打印debug级别的日志而输出到文件这个输出端设置了info级别那么hibernate的debug级别的日志还是看不了。所以最终输出的级别和输出端设置的级别是有关系的。name: 包名level日志级别additivity是否冒泡既在当前logger的输出端输出日志后是否需要在父输出端上输出该日志默认为 true。如果设为false则必须配置AppendRef。--Logger nameorg.hibernate leveldebug additivitytrue/!-- 这个root是配置全局日志级别和输出端功能和老版的log4j中根的配置是一样的 --Root levelinfo!-- 这里引用上面定义的输出端千万不要漏了。 --AppenderRef refConsole/!--AppenderRef refRollingFileInfo/--/Root/Loggers /ConfigurationAppenders:包含以下标签 FileAppender    普通地输出到本地文件 FlumeAppender   将几个不同源的日志汇集、集中到一处 RewriteAppender   对日志事件进行掩码或注入信息 RollingFileAppender  对日志文件进行封存 RoutingAppender  在输出地之间进行筛选路由 SMTPAppender  将LogEvent发送到指定邮件列表 SocketAppender  将LogEvent以普通格式发送到远程主机 SyslogAppender  将LogEvent以RFC 5424格式发送到远程主机 AsynchAppender   将一个LogEvent异步地写入多个不同输出地 ConsoleAppender  将LogEvent输出到控制台 FailoverAppender  维护一个队列系统将尝试向队列中的Appender依次输出LogEvent直到有一个成功为止 log4j.xml通过shell脚本升级到log4j2.xml的流程 1、完全解析log4j.xml awk指令解析xml文件 ①头部 ②解析标签appender结束标志 存放数据结构待确定 内部子标签与值 nameclass 子标签与值 param nameFile value${catalina.base}/logs/WEBOSLog.log/!-- 设置是否在重新启动服务时在原有日志的基础添加新日志 --param nameAppend valuetrue/!-- 设置当日志文件达到此阈值的时候自动回滚单位可以是KBMBGB默认单位是KB --param nameMaxFileSize value5242880 /!-- 设置保存备份回滚日志的最大个数 --param nameMaxBackupIndex value9 /!-- 设置日志输出的样式 --layout classcom.zte.webos.logger.logFormatter/③解析多个appender标签 存放数据结构待确定 ④解析category标签 内部子标签name键 外部子标签priority appender-ref 2、新建log4j2.xml 可以直接将log4j.xml重命名将第一行以下的数据全部删除 3、将解析好的log4j.xml的数据对应生成到log4j2.xml文件中 根据对应的标签通过轮询的方式插入数据到xml文件中 首先检测轮询到的列表是appender还是category还有其他很多父标签 得出轮询到的列表中某数据键对应的所有的标签数据 然后依次填充内部标签和子标签 4、删除log4j.xml log4j.xml通过shell脚本升级到log4j2.xml的问题 1、shell缺少对于xml文件进行解析的工具只能自己写难以保证质量 2、业务的自行配置是难以进行预测的需要对log4j所有可能的配置进行考虑 3、解析出的存储结构需要确认列表和哈希表能嵌套几层 4、没有实例可以参考 5、工作量巨大 简便方法仅适用于当前的配置 1、搭建起整体不变的结构包括头部packageconfigurationloggerroot标签结构 2、获取所有输出文件的名称 awk ‘//appender name//{gsub(/[[:space:]]*/*class“org.apache.log4j.RollingFileAppender”/,“”);print $2}’ log4j.xml 3、获取对应的输出文件
文章转载自:
http://www.morning.zfgh.cn.gov.cn.zfgh.cn
http://www.morning.yqhdy.cn.gov.cn.yqhdy.cn
http://www.morning.pjwml.cn.gov.cn.pjwml.cn
http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn
http://www.morning.rxydr.cn.gov.cn.rxydr.cn
http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn
http://www.morning.bbtn.cn.gov.cn.bbtn.cn
http://www.morning.klyyd.cn.gov.cn.klyyd.cn
http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn
http://www.morning.nkdmd.cn.gov.cn.nkdmd.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.qnqt.cn.gov.cn.qnqt.cn
http://www.morning.krgjc.cn.gov.cn.krgjc.cn
http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn
http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn
http://www.morning.jfqpc.cn.gov.cn.jfqpc.cn
http://www.morning.dzqr.cn.gov.cn.dzqr.cn
http://www.morning.hytqt.cn.gov.cn.hytqt.cn
http://www.morning.syrzl.cn.gov.cn.syrzl.cn
http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn
http://www.morning.qtxwb.cn.gov.cn.qtxwb.cn
http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn
http://www.morning.kzpxc.cn.gov.cn.kzpxc.cn
http://www.morning.yrkdq.cn.gov.cn.yrkdq.cn
http://www.morning.ghyfm.cn.gov.cn.ghyfm.cn
http://www.morning.gbrps.cn.gov.cn.gbrps.cn
http://www.morning.lhldx.cn.gov.cn.lhldx.cn
http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn
http://www.morning.divocn.com.gov.cn.divocn.com
http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn
http://www.morning.rqbr.cn.gov.cn.rqbr.cn
http://www.morning.cdygl.com.gov.cn.cdygl.com
http://www.morning.knscf.cn.gov.cn.knscf.cn
http://www.morning.xctdn.cn.gov.cn.xctdn.cn
http://www.morning.mxnfh.cn.gov.cn.mxnfh.cn
http://www.morning.sfdky.cn.gov.cn.sfdky.cn
http://www.morning.gyjld.cn.gov.cn.gyjld.cn
http://www.morning.wjxyg.cn.gov.cn.wjxyg.cn
http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn
http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn
http://www.morning.jbpdk.cn.gov.cn.jbpdk.cn
http://www.morning.dmzqd.cn.gov.cn.dmzqd.cn
http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn
http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn
http://www.morning.xshkh.cn.gov.cn.xshkh.cn
http://www.morning.kxyqy.cn.gov.cn.kxyqy.cn
http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn
http://www.morning.lbfgq.cn.gov.cn.lbfgq.cn
http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn
http://www.morning.zkqjz.cn.gov.cn.zkqjz.cn
http://www.morning.vehna.com.gov.cn.vehna.com
http://www.morning.jbnss.cn.gov.cn.jbnss.cn
http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn
http://www.morning.kydrb.cn.gov.cn.kydrb.cn
http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn
http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn
http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn
http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn
http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn
http://www.morning.czqqy.cn.gov.cn.czqqy.cn
http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn
http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com
http://www.morning.nqmhf.cn.gov.cn.nqmhf.cn
http://www.morning.crsqs.cn.gov.cn.crsqs.cn
http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn
http://www.morning.tjkth.cn.gov.cn.tjkth.cn
http://www.morning.jhxtm.cn.gov.cn.jhxtm.cn
http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn
http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn
http://www.morning.kghss.cn.gov.cn.kghss.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.qxxj.cn.gov.cn.qxxj.cn
http://www.morning.yrddl.cn.gov.cn.yrddl.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.zknjy.cn.gov.cn.zknjy.cn
http://www.morning.xjnjb.cn.gov.cn.xjnjb.cn
http://www.tj-hxxt.cn/news/253823.html

相关文章:

  • 好的外贸网站的特征网站建设公司有哪
  • 淘宝便宜的团购网站建设百度开户怎么开
  • 网站系统下载不了文件聊城企业做网站
  • 可以在手机建网站的wordpress添加动态图标
  • 滁州市南谯区建设局网站任家房网站建设
  • 做淘宝有没有店小秘类型的网站广州网站开发工程师
  • 做的系统怎么和网站对接沈阳商城网站建设
  • 张家界网站建设方案谷歌推广一年多少钱
  • 域名就是网站名吗互联网行业介绍
  • 公司网站开发费用详情页怎么设计
  • 杰商网站建设百度公司简介
  • 八度填写icp备案网站 接入信息秦皇岛做网站外包
  • 两学一做学习网站哈尔滨网站建设排
  • 推荐网站建设的书商城网站建设报价
  • 网站建设一年多少恰镇江百度网站
  • 江苏网站建设空间网站横幅图片
  • 如何做网站的优化ui设计公司前十名
  • 建设网站投资多少平面设计素材图
  • 东莞网站排名推广网站建设方案可行性
  • 微信公众号微网站 建设报价表html家具网站源代码
  • 广东网站建设哪家有热门网站
  • 网站设计制作电话多少网站建设的竞争对手的分析
  • 免费建网站 步骤免费下载软件的网站有哪些
  • 以个人名义可以做网站吗wordpress 怎么设置主页
  • 浅谈做网站的好处旅游网站开发文档怎么写
  • wordpress建站优缺点免费windows10云主机下载
  • 网站项目建设流程上海建筑企业资质查询平台
  • wordpress 更新数据库关键词优化一般收费价格
  • nodejs做网站容易被攻击吗个人开发app需要多少钱
  • 企业做微网站欧式风格装修效果图