<?xml version="1.0" encoding="UTF-8" ?> <Configuration status="OFF"> <!-- Properties 模块 : 配置一些全局的属性值 --> <properties> <property name="LOG_HOME">/data/logs</property> <property name="APP_NAME">cb-service-user</property> <!-- PatternLayout 日志输出格式模板: %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS} %-5p :输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL(级别从左显示5个字符宽度)。 %M:输出产生日志信息的方法名。 %F:输出日志消息产生时所在的文件名称。 %L:日志输出所在行数 日志输出所在行数 %t:输出产生该日志事件的线程名 %msg:日志消息 %r:输出自应用程序启动到输出该log信息耗费的毫秒数 %n:是换行符 %X{xxx}:输出在ThreadContext中变量xxx的值,该值需要在ThreadContext中进行设置, service在ConsumerLogFilter和ProviderLogFilter设置; web统一在Interceptor中设置 --> <property name="CONSOLE_PATTERN_LAYOUT">[%d{HH:mm:ss.SSS}] [%-5p] [%F:%M] %msg%rEx%n</property> <property name="CONSOLE_PATTERN_LAYOUT_APP">[%d{HH:mm:ss.SSS}] [%-5p] [%F:%M:%L] [%X{MSG-NO}] [%X{TYPE}] [%X{REMOTE-HOST}:%X{REMOTE-PORT} -> %X{LOCAL-HOST}:%X{LOCAL-PORT}] %msg%rEx%n</property> <property name="PATTERN_LAYOUT">[%d] [%-5p] [%F:%M] %msg%rEx%n</property> <property name="PATTERN_LAYOUT_APP">[%d] [%-5p] [%F:%M:%L] [%X{MSG-NO}] [%X{TYPE}] [%X{REMOTE-HOST}:%X{REMOTE-PORT} -> %X{LOCAL-HOST}:%X{LOCAL-PORT}] %msg%rEx%n</property> </properties> <!-- Appenders 模块 : 日志输出相关配置 --> <Appenders> <!-- 输出到Console --> <!-- Console节点 配置控制台日志输出: name:指定Appender的名字. target: SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT. PatternLayout: 输出格式,采用properties中定义的格式.--> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${CONSOLE_PATTERN_LAYOUT_APP}" /> </Console> <!-- 输出到滚动保存的文件 --> <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${LOG_HOME}/${APP_NAME}.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${APP_NAME}.log.%d{yyyy-MM-dd}.%i"> <PatternLayout pattern="${PATTERN_LAYOUT_APP}" /> <Policies> <!-- TimeBasedTriggeringPolicy 通过时间策略来对log文件进行处理 interval 的值含义取决于filePattern定义的最小的时间粒度,当前为一个月 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!--SizeBasedTriggeringPolicy 基于对log文件大小的判断策略: 当log文件大于设定的阈值时,将触发封存动作。 可设定的log文件大小的单位有bytes、KB、MB或GB。--> <SizeBasedTriggeringPolicy size="500 MB" /> </Policies> </RollingRandomAccessFile> <!--单独处理ERROR级别的日志,并把该日志放到logs/xxx-error.log文件中 --> <RollingFile name="RollingFileError" fileName="${LOG_HOME}/${APP_NAME}-error.log" filePattern="${LOG_HOME}/error/${APP_NAME}-error.log.%i"> <!-- ThresholdFilter 过滤器: 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) 日志的级别: ALL< Trace < DEBUG < INFO < WARN < ERROR < FATAL < OFF。--> <ThresholdFilter level="ERROR" /> <PatternLayout pattern="${PATTERN_LAYOUT_APP}" /> <Policies> <SizeBasedTriggeringPolicy size="500 MB" /> </Policies> </RollingFile> <!--DRUID的日志记录追加器 --> <RollingFile name="druidSqlRollingFile" fileName="${LOG_HOME}/${APP_NAME}-sql.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${APP_NAME}-sql.log.%d{yyyy-MM-dd}.%i"> <PatternLayout pattern="${PATTERN_LAYOUT_APP}" /> <Policies> <SizeBasedTriggeringPolicy size="500 MB" /> <TimeBasedTriggeringPolicy /> </Policies> </RollingFile> </Appenders> <Loggers> <!-- Logger同步日志配置,一般需要将additivity设置为false,日志不会重复打印否则还会在root里面打印 --> <Logger name="com.joinpay.cb" level="DEBUG" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="RollingRandomAccessFile" /> <AppenderRef ref="RollingFileError" /> </Logger> <!--记录druid-sql的记录 AsyncLogger异步日志配置,同样需要将additivity设置为false --> <AsyncLogger name="druid.sql.Statement" level="DEBUG" additivity="false"> <AppenderRef ref="Console" /> </AsyncLogger> <!-- level="INFO" 只能够输出level级别是INFO及INFO以上的 Root日志必须配置相当于父类日志,level默认为Error --> <Root level="INFO"> <AppenderRef ref="druidSqlRollingFile" level="INFO" /> </Root> </Loggers> </Configuration>