郑州高端网站建设团队,家庭装修设计软件哪个好用,游戏网站制作模板,创建网站 英文文章目录一、log4j2介绍二、配置文件节点解析三、需要的Maven依赖四、最简配置五、较全面的配置补充一、log4j2介绍
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式#xff0c;2.x版本配置文件后缀名只能为.xml,.json或者.jsn2.x版本配置文件后缀名只能为.xml,.json或者.jsn。 配置文件的格式log2j配置文件可以是xml格式的也可以是json格式的。 配置文件的位置log4j2默认会在classpath目录下寻找log4j2.xml、log4j.json、log4j.jsn等名称的文件。 系统选择配置文件的优先级(从先到后)如下 (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件. (2).classpath下的名为log4j2-test.xml的文件. (3).classpath下名为log4j2.json 或者log4j2.jsn的文件. (4).classpath下名为log4j2.xml的文件. 我们一般默认使用log4j2.xml进行命名。
二、配置文件节点解析
(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。 PatternLayout:输出格式不设置默认为:%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 输出当前线程名称 %-5level 输出日志级别-5表示左对齐并且固定输出5个字符如果不足在右边补0 %logger 输出logger名称因为Root Logger没有名称所以没有输出 %msg 日志文本 %n 换行 其他常用的占位符有 %F 输出所在的类文件名如Log4j2Test.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在的行数, 包括类名、方法名、文件名、行数
三、需要的Maven依赖
dependency groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-api/artifactId version2.5/version /dependency dependency groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-core/artifactId version2.5/version /dependency 四、最简配置
?xml version1.0 encodingUTF-8?Configuration statusWARNAppendersConsole nameConsole targetSYSTEM_OUTPatternLayout pattern%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n//Console/AppendersLoggersRoot levelerrorAppenderRef refConsole//Root/Loggers/Configuration五、较全面的配置 ?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补充
log4j2.xml 文件需要配置到WEB-INF的classes下面才会生效
?xml version1.0 encodingUTF-8?
Configuration statusERROR monitorInterval600!-- configure.status 为设置日志输出级别级别如下OFF 、FATAL 、ERROR、WARN、INFO、DEBUG、TRACE、ALL --!-- configure.monitorInterval 监控间隔 指log4j2每隔600秒10分钟自动监控该配置文件是否有变化如果变化则自动根据文件内容重新配置 --Propertiesproperty namepattern%d{yyyy/MM/dd HH:mm:ss.SSS} [%p] %t %c %m%n/propertyproperty namebasePathH:/datatrans/logs/property/Properties!--配置appenders源日志输出的地址--AppendersConsole nameconsole targetSYSTEM_OUTPatternLayout pattern${pattern}//ConsoleRollingRandomAccessFile namefileLoggerfileName${basePath}/server.logfilePattern${basePath}/server-%d{yyyy-MM-dd}.logappendtruePatternLayout pattern${pattern}/PoliciesTimeBasedTriggeringPolicy interval1 modulatetrue/!--测试日志输出:--SizeBasedTriggeringPolicy size3kb/!--SizeBasedTriggeringPolicy size100MB/--/Policies/RollingRandomAccessFile/Appenders!--配置logers级别、使用的输出地--LoggersLogger namecom.gblfy.datatransleveldebugadditivitytrueappender-ref reffileLoggerleveldebug//LoggerRoot levelinfo additivityfalseappender-ref refconsole//Root/Loggers
/Configuration参考 Java日志框架与Log4j2详解 https://www.jianshu.com/p/1b04924d8a1f Java日志打印: log4j2 https://www.cnblogs.com/bestlmc/p/12012875.html