-
Notifications
You must be signed in to change notification settings - Fork 0
zhangweixin/test
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<?xml version="1.0" encoding="utf-8" ?> <!--zhangweixin 2016-12-08--> <Configuration status="INFO"> <!--log4j2官方文档https://logging.apache.org/log4j/2.x/--> <Appenders> <!--定义常用三种appender--> <!--定义轮转日志appender--> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="%d %p %c{1}.%M:%line [%t] %m%n"/> </Console> <RollingFile name="RollingFile" fileName="${sys:logPath}/log/app.log" filePattern="${sys:logPath}/log/${date:yyyy-MM}/app-${date:dd-MM-yyyy}-%i.log.gz"> <!-- 重要:在属性值里面可以使用log4j2提供的各种LookUp动态的构造属性值,比如fileName属性使用系统Lookup查找logPath(${sys:logPath}) LookUp种类以及具体用法文档 http://logging.apache.org/log4j/2.x/manual/lookups.html 为什么说查找属性重要而且强大那,因为在log4j2运行的时候当我们没有办法设置某个配置值的时候 我们可以在程序启动的时候设置某些Lookup值,然后在配置中引用这些Lookup,在log4j2初始化的时候会自动获取我们配置的值 这样就达到动态设置某些属性的目的;本例子中我们通过在web启动的时候设置系统属性logPath来设置日志路径(不要直接在配置文件写日志路径 因为可能结果路径可能不是你想要的,比如设置成相对路径那么日志路径会跑到tomcat的bin目录下,这肯定不是你想要的)为web项目路径下 --> <PatternLayout> <!--定义日志的输出模式 参数解释 d:日期等于date,默认的日期输出模式为yyyy-MM-dd HH:mm:ss ,SSS 可以在后面接大括号指定日期格式如:%d{yy-MM-ss HH:mm:ss} p:日志等级等于level c:类名字,默认输出类的完全限定名如com.test.XXXX;可以在后面跟大括号指定输出长短如:%c{1}输出XXXX, %c{2}test.XXXX,%c{3}com.test.XXXX %{-1} test.XXXX %{-2}XXXX M:输出日志的方法名字 line:行号 t:线程名字,跟T不一样,T指的是输出线程的id m:输出的消息 n:换行 --> <Pattern>%d %p %c{1}.%M:%line [%t] %m%n</Pattern> </PatternLayout> <!--rolling类型的appender需要TriggeringPolicy和RolloverStrategy两个策略指导rolling--> <Policies> <!--TriggeringPolicy指导何时触发rolling动作,常用的有三类. CronTriggeringPolicy:基于corn表达式触发rolling 两个属性schedule:指定的corn表达式 evaluateOnStartup:是否在启动的时候计算一次是否需要rolling,如果为true则会根据 日志文件最后一次修改时间与当前时间计算是否需要立即rolling SizeBasedTriggeringPolicy:基于日志文件大小是否达到指定的容量触发rolling,属性size指定容量比如2MB,2KB,2GB TimeBasedTriggeringPolicy:基于时间触发rolling两个属性 interval:两次触发rolling间隔默认是1,单位与上面filePattern属性指定的打包日志文件时间有关, 比如dd-MM-yyyy单位就是天,yyyy-MM-dd HH单位就是小时 modulate:是否对两次打包间隔时间进行调整,如果为true则以0点为起点进行调整,比如为true interval为4 单位是小时,当前时间是3点则第一次打包时间为4点,下次为8点,14点,16点等等. 一般指定几个触发策略组合提供触发动作,只要其中一个触发器触发,则触发rolling动作. --> <CronTriggeringPolicy schedule="0/3 * * * * ?" evaluateOnStartup="true"/> <SizeBasedTriggeringPolicy size="2MB"/> <TimeBasedTriggeringPolicy interval="4" modulate="true"/> </Policies> <!--rolling策略 作用就是从到小rolling还是从小到大rollingy以及最大rolling数;假设日志初始文件为foo.log 打包文件模式为 foo-%i.log.gz max:最大rolling数,最大打包文件为foo-20.log.gz,这个数字与filePattern属性中是否使用%i(保存当前counter)有关 min:最小rolling数,最小打包文件为foo-1.log.gz fileIndex:指定从min还是max开始新的rollover,max的话则index大的是新的打包文件比如foo-2.log.gz比foo-1.log.gz新; 反之foo-1.log.gz比foo-2.log.gz新 --> <DefaultRolloverStrategy max="20" min="1" fileIndex="min"/> </RollingFile> <!--定义随机访问轮转日志appender(性能比上面那个好,推荐使用这种)--> <RollingRandomAccessFile name="RandomAccessFile" bufferSize="8192" fileName="${sys:logPath}/log/app.log" filePattern="${sys:logPath}/log/${date:yyyy-MM}/app-${date:dd-MM-yyyy}-%i.log.gz"> <Policies> <CronTriggeringPolicy schedule="0/3 * * * * ?" evaluateOnStartup="true"/> <SizeBasedTriggeringPolicy size="2MB"/> </Policies> <DefaultRolloverStrategy max="10" min="3" fileIndex="max"/> </RollingRandomAccessFile> <!--另外log4j还支持其他appender比如:kafka,jdbc,nosql...具体参考http://logging.apache.org/log4j/2.x/manual/appenders.html--> </Appenders> <Loggers> <!--定义日志记录器可以包含一个rootLogger和多个子Logger或者只有一个rootLogger所有的logging都委托给它--> <!--Logger指定具体包下面的logger配置,可以定义多个指定不同包下的日志配置--> <!--additivity如果为true(默认),子类的日志级别会传递到父类logger,比如本配置的root,同一条日志会输出两遍--> <Logger name="org.springframework" level="info" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="RandomAccessFile"/> <!--可以引用多个不同的appender--> </Logger> <Logger name="com.test" level="info" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="RandomAccessFile"/> </Logger> <Root level="DEBUG"> <AppenderRef ref="RollingFile"/> <AppenderRef ref="RandomAccessFile"/> </Root> </Loggers> </Configuration>
About
这是个测试账户
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published