住房和城乡建设部网站规范答疑,wordpress更换ssl证书,网站开发维护成本计算,网站建设需要购买服务器么一、新建工程 选择一些基础依赖 填写工程名称和项目路径
二、工程配置
修改文件编码格式 设置Java Compiler 修改maven配置文件路径
三、pom.xml的web依赖中排除掉logging依赖#xff0c;并且引入log4j2依赖
dependencygroupIdorg.springframework.…一、新建工程 选择一些基础依赖 填写工程名称和项目路径
二、工程配置
修改文件编码格式 设置Java Compiler 修改maven配置文件路径
三、pom.xml的web依赖中排除掉logging依赖并且引入log4j2依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusions!-- 排除掉logging不使用logback改用log4j2 --exclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions
/dependency
!-- log4j2 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId
/dependency四、springboot配置
logging:config: classpath:log4j2.xml五、log4j2配置文件
configuration statusOFF monitorInterval30PropertiesProperty namepattern%d{yyyy-MM-dd HH:mm:ss,SSS}|%p|%c|%L|%m%n/PropertyProperty namelogPathlogs/Property/PropertiesAppenders!--设置在控制台打印日志--Console nameconsole targetSYSTEM_OUTPatternLayout pattern${pattern}//Console!--设置级别为 DEBUG 日志输出到 debug.log 中--RollingRandomAccessFile namedebugimmediateFlushfalsefileName${logPath}/debug.logfilePattern${logPath}/debug-%d{yyyy-MM-dd}.logFilters!--设置只输出级别为 debug 的日志--ThresholdFilter levelDEBUG/ThresholdFilter levelINFO onMatchDENY onMismatchNEUTRAL//FiltersPatternLayout pattern${pattern}/Policies!-- 按天生成日志文件--TimeBasedTriggeringPolicy modulatetrue interval1//Policies!-- 最多保存日志文件的数目 --DefaultRolloverStrategy max15//RollingRandomAccessFileRollingRandomAccessFile nameinfoimmediateFlushfalsefileName${logPath}/info.logfilePattern${logPath}/info-%d{yyyy-MM-dd}.logFiltersThresholdFilter levelINFO/ThresholdFilter levelWARN onMatchDENY onMismatchNEUTRAL//FiltersPatternLayout pattern${pattern}/PoliciesTimeBasedTriggeringPolicy modulatetrue interval1//PoliciesDefaultRolloverStrategy max60//RollingRandomAccessFileRollingRandomAccessFile namewarnimmediateFlushfalsefileName${logPath}/warn.logfilePattern${logPath}/warn-%d{yyyy-MM-dd}.logFiltersThresholdFilter levelWARN/ThresholdFilter levelERROR onMatchDENY onMismatchNEUTRAL//FiltersPatternLayout pattern${pattern}/PoliciesTimeBasedTriggeringPolicy modulatetrue interval1//PoliciesDefaultRolloverStrategy max60//RollingRandomAccessFileRollingRandomAccessFile nameerrorimmediateFlushfalsefileName${logPath}/error.logfilePattern${logPath}/error-%d{yyyy-MM-dd}.logPatternLayout pattern${pattern}/FiltersThresholdFilter levelERROR//FiltersPoliciesTimeBasedTriggeringPolicy modulatetrue interval1//PoliciesDefaultRolloverStrategy max60//RollingRandomAccessFile!-- 设置 task_suc 日志 --RollingRandomAccessFile nametask_sucimmediateFlushfalsefileName${logPath}/task_suc.logfilePattern${logPath}/task_suc-%d{yyyy-MM-dd}.logPatternLayout pattern${pattern}/PoliciesTimeBasedTriggeringPolicy modulatetrue interval1//PoliciesDefaultRolloverStrategy max90//RollingRandomAccessFile!-- 设置 task_fail 日志 --RollingRandomAccessFile nametask_failimmediateFlushfalsefileName${logPath}/task_fail.logfilePattern${logPath}/task_fail-%d{yyyy-MM-dd}.logPatternLayout pattern${pattern}/PoliciesTimeBasedTriggeringPolicy modulatetrue interval1//PoliciesDefaultRolloverStrategy max90//RollingRandomAccessFile/AppendersLoggersLogger namecom.example.log4j2demo levelDEBUG additivitytrueAppenderRef refdebug/AppenderRef refinfo/AppenderRef refwarn/AppenderRef referror//Logger!-- org.springframework 只输出 ERROR 级别以上的日志 --Logger nameorg.springframework levelERROR/!-- org.apache 只输出 ERROR 级别以上的日志 --Logger nameorg.apache levelERROR/!-- task_suc 日志 --Logger nametask_suc additivitytrueAppenderRef reftask_suc//Logger!-- task_fail 日志 --Logger nametask_fail additivitytrueAppenderRef reftask_fail//LoggerRoot levelDEBUGAppenderRef refconsole//Root/Loggers
/configuration注
1、configuration 标签
!--
status 级别有8个ALL,TRACE, DEBUG, INFO, WARN, ERROR ,FATAL,OFF。是帮助开发者找错用的它可以检测log4j 2的配置文件是否有错也可以检测到死循环的logger
monitorInterval log4j2 自动检测配置文件的时间间隔单位秒
--
configuration statusOFF monitorInterval302、Console标签
!--
设置在控制台打印日志
将输出写到 System.err 或 System.out 。如果想将输出写到System.out设置Console标签下的target为 SYSTEM_OUT 如果想将输出写到System.err设置Console标签下的target为 SYSTEM_ERR
--
Console nameconsole targetSYSTEM_OUTPatternLayout pattern${pattern}/
/Console3、日志输出格式
!--
日志输出格式每个转换说明符以百分号(%)开头%后面的转换字符有如下:
p (level) 日志级别
clogger Logger的Name
C (class) Logger调用者的全限定类名
d (date) 日期
highlight 高亮颜色
l (location) 调用位置
L (line) 行号
m (msg/message) 输出的内容
M (methode) 调用方法 ***
maker marker的全限定名
n 输出平台相关的换行符,如\n \r\n
pid (processId) 进程ID
level p日志级别
r JVM启动后经过的微秒
t (tn/thread/threadName) 线程名称
T (tid/threadId) 线程ID
tp (threadPriority) 线程优先级
x (NDC) 线程Context堆栈
--
Property namepattern%d{yyyy-MM-dd HH:mm:ss,SSS}|%p|%c|%L|%m%n/Property4、RollingRandomAccessFile 标签
!--
设置级别为 DEBUG 日志输出到 debug.log 中
日志写入策略 immediateFlush log4j2接收到日志事件时是否立即将日志刷到磁盘。默认为true 。
异步日志将会自动批量刷新到磁盘所以这里设置为false
--
RollingRandomAccessFile namedebugimmediateFlushfalsefileName${logPath}/debug.logfilePattern${logPath}/debug-%d{yyyy-MM-dd}.logFilters!--设置只输出级别为 debug 的日志--ThresholdFilter levelDEBUG/ThresholdFilter levelINFO onMatchDENY onMismatchNEUTRAL//FiltersPatternLayout pattern${pattern}/Policies!--根据时间生成日志文件单位以文件命名中的时间精度来确定单位。比如 yyyy-MM-dd 单位为天yyyy-MM-dd-HH 单位为小时interval时间间隔--TimeBasedTriggeringPolicy modulatetrue interval1//Policies!-- 最多保存日志文件的数目 --DefaultRolloverStrategy max15/
/RollingRandomAccessFileRollingRandomAccessFile 为异步日志RollingFile 为同步日志。
5、Logger 标签
!-- 整个工程默认日志实例name工程名例如用Slf4j这个注解或者LoggerFactory.getLogger(XXX.class)的日志实例 --
Logger namecom.example.log4j2demo levelDEBUG additivitytrueAppenderRef refdebug/AppenderRef refinfo/AppenderRef refwarn/AppenderRef referror/
/Logger六、使用示例
Slf4j
SpringBootTest
class Log4j2DemoApplicationTests {private static final Logger sucLog LoggerFactory.getLogger(task_suc);private static final Logger failLog LoggerFactory.getLogger(task_fail);private static final Logger sysLog LoggerFactory.getLogger(Log4j2DemoApplicationTests.class);Testvoid log4j2() {sucLog.debug(task_suc debug);sucLog.info(task_suc info);sucLog.warn(task_suc warn);sucLog.error(task_suc error);failLog.debug(task_fail debug);failLog.info(task_fail info);failLog.warn(task_fail warn);failLog.error(task_fail error);log.debug(normal debug);log.info(normal info);log.warn(normal warn);log.error(normal error);sysLog.debug(sys debug);sysLog.info(sys info);sysLog.warn(sys warn);sysLog.error(sys error);}}控制台输出结果
日志文件