做衣服的网站,注册一个咨询公司需要多少钱,深圳市建设交易中心网站首页,云服务器是干嘛用的最近项目上有使用到log4j2日志模板配置#xff0c;本文简单总结一下之前的学习笔记#xff0c;如有纰漏之处#xff0c;请批评指正。
1. log4j2日志依赖
使用log4j2日志模板时#xff0c;需要引入相关依赖#xff0c;下边的两种依赖方式均可。
1.1 使用sl4j依赖时 …最近项目上有使用到log4j2日志模板配置本文简单总结一下之前的学习笔记如有纰漏之处请批评指正。
1. log4j2日志依赖
使用log4j2日志模板时需要引入相关依赖下边的两种依赖方式均可。
1.1 使用sl4j依赖时 propertiesspring-boot.version2.6.13/spring-boot.versionlog4j2.version2.18.0/log4j2.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/version/dependency!-- log4j2 --dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.30/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion${log4j2.version}/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion${log4j2.version}/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j-impl/artifactIdversion${log4j2.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactId/exclusion/exclusions/dependency
使用sl4j依赖时需要在打印日志的类中声明一个日志对象处理
private static final Logger LOGGER LoggerFactory.getLogger(xxxxxx.class);// 方法内
LOGGER .info(application started); 这种方式需要配置很多次略繁琐。可以类上使用注解sl4j来代替
1.2 使用lombok依赖时
如果不想像上边那样写一堆sl4f依赖可以直接使用lombok依赖作用是相同的。仅仅在需要打印日志的类上配置上注解sl4j即可。 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency
在需要打印日志的方法内直接使用
// 方法内
log.info(application started); 1.3 小结
上边两种配置方式原理雷同看实际项目需要和个人喜好使用即可。 2. log4j2.xml日志模板配置
?xml version1.0 encodingUTF-8?
configuration statusOFFproperties!-- 日志打印级别 --property nameLOG_LEVELINFO/property!-- APP名称 --property nameAPP_NAME valuespring-mvc-log/!-- 日志文件存储路径 --property nameLOG_HOME./logs/property!-- 存储天数 --property nameLOG_MAX_HISTORY value10d/!-- 单个日志文件最大值, 单位 KB, MB, GB --property nameLOG_MAX_FILE_SIZE value10 MB/!-- 每天每个日志级别产生的文件最大数量 --property nameLOG_TOTAL_NUMBER_DAILY value10/!-- 压缩文件的类型,支持zip和gz,建议Linux用gz,Windows用zip --property nameLOG_ARCHIVE_FILE_SUFFIX valuezip/!-- 日志文件名 --property nameLOG_FILE_NAME value${LOG_HOME}/${APP_NAME}/property nameFILE_NAME_PATTERN value${LOG_HOME}/${APP_NAME}.%d{yyyy-MM-dd}/!-- %d: 日期%-5level: 日志级别显示时占5个字符不足[%t]: 线程名%c{1.}: 显示调用者只显示包名最后一截及方法名前面的只取首字母.%M(代码行号%L):%msg%n: 需要打印的日志信息,换行:INFO[MsgToMP:99]Bright: 加粗 --!--日志输出格式-控制台彩色打印--property nameENCODER_PATTERN_CONSOLE%blue{%d{yyyy-MM-dd HH:mm:ss.SSS}} | %highlight{%-5level}{ERRORBright RED, WARNBright Yellow, INFOBright Green, DEBUGBright Cyan, TRACEBright White} | %yellow{%t} | %cyan{%l} %white{%msg%n}/property!--日志输出格式-文件--property nameENCODER_PATTERN%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level | %t | %c{1.} %msg%n/property/propertiesAppenders!-- 控制台的输出配置 --Console nameConsole targetSYSTEM_OUT!--输出日志的格式--PatternLayout pattern${ENCODER_PATTERN_CONSOLE} //Console!-- 打印出所有的info及以下级别的信息每次大小超过size进行压缩作为存档--RollingFile nameRollingFileAll fileName${LOG_FILE_NAME}.ALL.log filePattern${FILE_NAME_PATTERN}.ALL.%i.log.${ARCHIVE_FILE_SUFFIX}!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch--ThresholdFilter level${LOG_LEVEL} onMatchACCEPT onMismatchDENY /!--输出日志的格式--PatternLayout pattern${ENCODER_PATTERN} /Policies!-- 归档每天的文件 --TimeBasedTriggeringPolicy /!-- 限制单个文件大小 --SizeBasedTriggeringPolicy size${LOG_MAX_FILE_SIZE} //Policies!-- 限制每天文件个数 --DefaultRolloverStrategy compressionLevel9 max${LOG_TOTAL_NUMBER_DAILY}Delete basePath${LOG_HOME} maxDepth1IfFileName glob${APP_NAME}.*.ALL.*.log.${ARCHIVE_FILE_SUFFIX} /IfLastModified age${LOG_MAX_HISTORY} //Delete/DefaultRolloverStrategy/RollingFileRollingFile nameRollingFileDebugfileName${LOG_FILE_NAME}.DEBUG.logfilePattern${FILE_NAME_PATTERN}.DEBUG.%i.log.${ARCHIVE_FILE_SUFFIX}FiltersThresholdFilter levelDEBUG /ThresholdFilter levelINFO onMatchDENYonMismatchNEUTRAL //FiltersPatternLayout pattern${ENCODER_PATTERN} /Policies!-- 归档每天的文件 --TimeBasedTriggeringPolicy /!-- 限制单个文件大小 --SizeBasedTriggeringPolicy size${LOG_MAX_FILE_SIZE} //Policies!-- 限制每天文件个数 --DefaultRolloverStrategy compressionLevel9max${LOG_TOTAL_NUMBER_DAILY}Delete basePath${LOG_HOME} maxDepth1IfFileName glob${APP_NAME}.*.DEBUG.*.log.${ARCHIVE_FILE_SUFFIX} /IfLastModified age7d //Delete/DefaultRolloverStrategy/RollingFileRollingFile nameRollingFileWarn fileName${LOG_FILE_NAME}.WARN.logfilePattern${FILE_NAME_PATTERN}.WARN.%i.log.${ARCHIVE_FILE_SUFFIX}FiltersThresholdFilter levelWARN /ThresholdFilter levelERROR onMatchDENYonMismatchNEUTRAL //FiltersPatternLayout pattern${ENCODER_PATTERN} /Policies!-- 归档每天的文件 --TimeBasedTriggeringPolicy /!-- 限制单个文件大小 --SizeBasedTriggeringPolicy size${LOG_MAX_FILE_SIZE} //Policies!-- 限制每天文件个数 --DefaultRolloverStrategy compressionLevel9max${LOG_TOTAL_NUMBER_DAILY}Delete basePath${LOG_HOME} maxDepth1IfFileName glob${APP_NAME}.*.WARN.*.log.${ARCHIVE_FILE_SUFFIX} /IfLastModified age7d //Delete/DefaultRolloverStrategy/RollingFileRollingFile nameRollingFileErrorfileName${LOG_FILE_NAME}.ERROR.logfilePattern${FILE_NAME_PATTERN}.ERROR.%i.log.${ARCHIVE_FILE_SUFFIX}FiltersThresholdFilter levelERROR //FiltersPatternLayout pattern${ENCODER_PATTERN} /PoliciesTimeBasedTriggeringPolicy /SizeBasedTriggeringPolicy size${LOG_MAX_FILE_SIZE} //PoliciesDefaultRolloverStrategy compressionLevel9 max${LOG_TOTAL_NUMBER_DAILY}Delete basePath${LOG_HOME} maxDepth1IfFileName glob${APP_NAME}.*.ERROR.*.log.${ARCHIVE_FILE_SUFFIX} /IfLastModified age7d //Delete/DefaultRolloverStrategy/RollingFile/Appenders!--只有定义了logger并引入以上AppendersAppender才会生效--Loggersroot level${LOG_LEVEL}appender-ref refConsole/appender-ref refRollingFileAll/appender-ref refRollingFileDebug/appender-ref refRollingFileWarn/appender-ref refRollingFileError//root/Loggers
/configuration3. 开启Console彩色打印 彩色打印配置
IDEA控制台没有打印彩色日志的主要原因在于 Log4j - 2.10 版本以后Log4j2默认关闭了Jansi一个支持输出ANSI颜色的类库
修改jvm参数: -Dlog4j.skipJansifalse
修改前边pom.xml添加彩色打印依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/versionexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactIdversion${spring-boot.version}/version/dependency 4. application.yml中配置
logging:config: classpath:log4j2.xmllevel:com.hl.magic.mvc: debug 5.常见模板中日志格式配置 springboot默认的日志格式 %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n logback默认的日志格式 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n lishuoboy推荐日志格式 %d{MM-dd HH:mm:ss.SSS} [%5level] %4line %40.40logger{39}.%-30.30method : %m%n