<!--?</code--><code class="xml keyword">xml</code> <code class="xml color1">version</code><code class="xml plain">=</code><code class="xml string">"1.0"</code> <code class="xml color1">encoding</code><code class="xml plain">=</code><code class="xml string">"UTF-8"</code><code class="xml plain">?></code>
<
configuration
>
说明:
1、日志级别及文件
日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中
例如:error级别记录到{log.context.name}_error.log(该文件为当前记录的日志文件),而{log.context.name}__error.log为归档日志,
日志文件按日期记录,每天的日志不再拆分
例如log-level-2013-12-21.log
其它级别的日志也是如此。
2、文件路径
统一输出到/home/logs
3、Appender
FILEERROR对应error级别,文件名以{log.context.name}_xxx_error.log形式命名
FILEWARN对应warn级别,文件名以{log.context.name}_xxx_error.log形式命名
FILEINFO对应info级别,文件名以{log.context.name}_xxx_error.log形式命名
FILEDEBUG对应debug级别,文件名以{log.context.name}_xxx_error.log形式命名
默认输出级别为debug,不明确指定情况下文件名以{log.context.name}.log形式命名
stdout将日志信息输出到控制上,为方便开发测试使用
-->
<
property
name
=
"log.directory"
value
=
"/home/logs/"
/>
<
property
name
=
"log.context.name"
value
=
"shop-crm-service21"
/>
<
property
name
=
"log.charset"
value
=
"UTF-8"
/>
<
property
name
=
"log.maxHistory"
value
=
"30"
/>
<
property
name
=
"log.pattern"
value
=
"%d{yyyy-MM-dd HH:mm:ss.SSS}$$[%thread]$$%-5level{}$$shop-crm-service$$%msg%n"
/>
<
property
name
=
"log.error.log.level"
value
=
"ERROR"
/>
<
property
name
=
"log.async.queue.size"
value
=
"1024"
/>
<
contextName
>${log.context.name}<!--</code--><code class="xml keyword">contextName</code><code class="xml plain">></code>
<
springProfile
name
=
"local"
>
<
appender
name
=
"STDOUT"
class
=
"ch.qos.logback.core.ConsoleAppender"
>
<
encoder
>
<
pattern
>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}) - %yellow([%file:%line]) - %msg%n<!--</code--><code class="xml keyword">pattern</code><code class="xml plain">></code>
<
charset
>${log.charset}<!--</code--><code class="xml keyword">charset</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">encoder</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">appender</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"mu,dohko,pre,production"
>
<
appender
name
=
"ROLLING_FILE_DEFAULT"
class
=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<
file
>${log.directory}${log.context.name}/${HOSTNAME}-%d{yyyyMMdd}.log<!--</code--><code class="xml keyword">file</code><code class="xml plain">></code>
<
append
>true<!--</code--><code class="xml keyword">append</code><code class="xml plain">></code>
<
rollingPolicy
class
=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<
fileNamePattern
>${log.directory}${log.context.name}/${HOSTNAME}.%d{yyyy-MM-dd}.%i.log<!--</code--><code class="xml keyword">fileNamePattern</code><code class="xml plain">></code>
<
maxHistory
>${log.maxHistory}<!--</code--><code class="xml keyword">maxHistory</code><code class="xml plain">></code>
<
totalSizeCap
>30gb<!--</code--><code class="xml keyword">totalSizeCap</code><code class="xml plain">></code>
<
timeBasedFileNamingAndTriggeringPolicy
class
=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<
maxFileSize
>2gb<!--</code--><code class="xml keyword">maxFileSize</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">timeBasedFileNamingAndTriggeringPolicy</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">rollingPolicy</code><code class="xml plain">></code>
<
encoder
>
<
pattern
>${log.pattern}<!--</code--><code class="xml keyword">pattern</code><code class="xml plain">></code>
<
charset
>${log.charset}<!--</code--><code class="xml keyword">charset</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">encoder</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">appender</code><code class="xml plain">></code>
<
appender
name
=
"ROLLING_FILE_ERROR"
class
=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<
filter
class
=
"ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>${log.error.log.level}<!--</code--><code class="xml keyword">level</code><code class="xml plain">></code>
<
onMatch
>ACCEPT<!--</code--><code class="xml keyword">onMatch</code><code class="xml plain">></code>
<
onMismatch
>DENY<!--</code--><code class="xml keyword">onMismatch</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">filter</code><code class="xml plain">></code>
<
file
>${log.directory}${log.context.name}/${HOSTNAME}_error-%d{yyyyMMdd}.log<!--</code--><code class="xml keyword">file</code><code class="xml plain">></code>
<
append
>true<!--</code--><code class="xml keyword">append</code><code class="xml plain">></code>
<
rollingPolicy
class
=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<
fileNamePattern
>${log.directory}${log.context.name}/${HOSTNAME}_error.%d{yyyy-MM-dd}.log<!--</code--><code class="xml keyword">fileNamePattern</code><code class="xml plain">></code>
<
maxHistory
>${log.maxHistory}<!--</code--><code class="xml keyword">maxHistory</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">rollingPolicy</code><code class="xml plain">></code>
<
encoder
>
<
pattern
>${log.pattern}<!--</code--><code class="xml keyword">pattern</code><code class="xml plain">></code>
<
charset
>${log.charset}<!--</code--><code class="xml keyword">charset</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">encoder</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">appender</code><code class="xml plain">></code>
<
appender
name
=
"ASYNC_FILE"
class
= 
"ch.qos.logback.classic.AsyncAppender"
>
<
discardingThreshold
>0<!--</code--><code class="xml keyword">discardingThreshold</code><code class="xml plain">></code>
<
queueSize
>${log.async.queue.size}<!--</code--><code class="xml keyword">queueSize</code><code class="xml plain">></code>
<
appender-ref
ref
= 
"ROLLING_FILE_DEFAULT"
/>
<!--</code--><code class="xml keyword">appender</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
logger
name
= 
"org.springframework.amqp.rabbit.listener.BlockingQueueConsumer"
level
=
"WARN"
/>
<
logger
name
= 
"org.apache.zookeeper.ClientCnxn"
level
=
"WARN"
/>
<
logger
name
= 
"com.hualala.commons.multidatasource.curator.CuratorClient"
level
=
"WARN"
/>
<
logger
name
= 
"com.hualala.commons.multidatasource.datasource.DynamicDataSource"
level
=
"WARN"
/>
<
logger
name
= 
"com.hualala.infrastructure.falcon.FalconMonitor"
level
=
"WARN"
/>
<
logger
name
=
"jdbc.sqltiming"
level
=
"debug"
/>
<
logger
name
=
"com.ibatis"
level
=
"debug"
/>
<
logger
name
=
"com.ibatis.common.jdbc.SimpleDataSource"
level
=
"debug"
/>
<
logger
name
=
"com.ibatis.common.jdbc.ScriptRunner"
level
=
"debug"
/>
<
logger
name
=
"com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"
level
=
"debug"
/>
<
logger
name
=
"java.sql.Connection"
level
=
"debug"
/>
<
logger
name
=
"java.sql.Statement"
level
=
"debug"
/>
<
logger
name
=
"java.sql.PreparedStatement"
level
=
"debug"
/>
<
logger
name
=
"java.sql.ResultSet"
level
=
"debug"
/>
<
logger
name
=
"org.springframework"
level
=
"WARN"
/>
<
logger
name
=
"com.hualala"
level
=
"debug"
additivity
=
"false"
>
<
springProfile
name
=
"local"
>
<
appender-ref
ref
=
"STDOUT"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"mu,dohko,pre"
>
<
appender-ref
ref
=
"ASYNC_FILE"
/>
<
appender-ref
ref
=
"ROLLING_FILE_ERROR"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"production"
>
<
appender-ref
ref
=
"ASYNC_FILE"
/>
<
appender-ref
ref
=
"ROLLING_FILE_ERROR"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">logger</code><code class="xml plain">></code>
<
root
>
<
springProfile
name
=
"local"
>
<
level
value
=
"info"
/>
<
appender-ref
ref
=
"STDOUT"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"mu,dohko,pre"
>
<
level
value
=
"info"
/>
<
appender-ref
ref
=
"ASYNC_FILE"
/>
<
appender-ref
ref
=
"ROLLING_FILE_ERROR"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"pre"
>
<
level
value
=
"warn"
/>
<
appender-ref
ref
=
"ASYNC_FILE"
/>
<
appender-ref
ref
=
"ROLLING_FILE_ERROR"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<
springProfile
name
=
"production"
>
<
level
value
=
"info"
/>
<
appender-ref
ref
=
"ASYNC_FILE"
/>
<
appender-ref
ref
=
"ROLLING_FILE_ERROR"
/>
<!--</code--><code class="xml keyword">springProfile</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">root</code><code class="xml plain">></code>
<!--</code--><code class="xml keyword">configuration</code><code class="xml plain">></code>
Original: https://www.cnblogs.com/duyinqiang/p/15903938.html
Author: 雄狮_杜
Title: springboot+logback日志规范
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541015/
转载文章受原作者版权保护。转载请注明原作者出处!