Logback日志配置示例

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"><syslogHost>10.177.81.90</syslogHost><facility>local0</facility><port>514</port><suffixPattern>%date %-5level [%thread] %logger{43}\(%L\) : %msg</suffixPattern>
</appender>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><smtpHost>${MAIL_HOST}</smtpHost><smtpPort>${MAIL_PORT}}</smtpPort><SSL>true</SSL><username>${MAIL_USERNAME}</username><password>${MAIL_PASSWORD}</password><from>${MAIL_FROM}</from><to>${MAIL_TO}</to><subject>平台日志报警 [${HOSTNAME}]</subject><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%date %-5level %logger{0} - %message%n</pattern></layout><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"><!-- send just one log entry per email --><bufferSize>10</bufferSize></cyclicBufferTracker></appender>

其中SYSLOG的suffixPattern,%date %-5level [%thread] %logger{43}\(%L\) : %msg, 和EMAIL的layout pattern,%date %-5level %logger{0} - %message%n,就是配置日志的格式。

Pattern关键字

Conversion Word Effect
c{length} lo{length} logger{length} Outputs the name of the logger at the origin of the logging event.This conversion word takes an integer as its first and only option. The converter's abbreviation algorithm will shorten the logger name, usually without significant loss of meaning. Setting the value of length option to zero constitutes an exception. It will cause the conversion word to return the sub-string right to the rightmost dot character in the logger name. The next table provides examples of the abbreviation algorithm in action.Conversion specifierLogger nameResult%loggermainPackage.sub.sample.BarmainPackage.sub.sample.Bar%logger{0}mainPackage.sub.sample.BarBar%logger{5}mainPackage.sub.sample.Barm.s.s.Bar%logger{10}mainPackage.sub.sample.Barm.s.s.Bar%logger{15}mainPackage.sub.sample.Barm.s.sample.Bar%logger{16}mainPackage.sub.sample.Barm.sub.sample.Bar%logger{26}mainPackage.sub.sample.BarmainPackage.sub.sample.BarPlease note that the rightmost segment in a logger name is never abbreviated, even if its length is longer than the length option. Other segments may be shortened to at most a single character but are never removed.
C{length} class{length} Outputs the fully-qualified class name of the caller issuing the logging request.Just like the %logger conversion word above, this conversion takes an integer as an option to shorten the class name. Zero carries special meaning and will cause the simple class name to be printed without the package name prefix. By default the class name is printed in full.Generating the caller class information is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue.
contextNamecn Outputs the name of the logger context to which the logger at the origin of the event was attached to.
d{pattern} date{pattern} d{pattern, timezone} date{pattern, timezone} Used to output the date of the logging event. The date conversion word admits a pattern string as a parameter. The pattern syntax is compatible with the format accepted by java.text.SimpleDateFormat.You can specify the string "ISO8601" for the ISO8601 date format. Note that the %date conversion word defaults to the ISO 8601 date format in the absence of a pattern parameter.Here are some sample parameter values. They assume that the actual date is Friday 20th of October, 2006 and that the author has returned to working on this document just after lunch.Conversion PatternResult%d2006-10-20 14:06:49,812%date2006-10-20 14:06:49,812%date{ISO8601}2006-10-20 14:06:49,812%date{HH:mm:ss.SSS}14:06:49.812%date{dd MMM yyyy;HH:mm:ss.SSS}20 oct. 2006;14:06:49.812The second parameter specifies a timezone. For example, the '%date{HH:mm:ss.SSS, Australia/Perth} would print the time in the time zone of Perth, Australia, the world's most isolated city. Note that in the absence of the timezone parameter, the default timezone of the host Java platform is used. If the specified timezone identifier is unknown or misspelled, the GMT timezone is assumed as dictated by the TimeZone.getTimeZone(String) method specification.COMMON ERROR Given that the comma ',' character is interpreted as the parameter separator, the pattern HH:mm:ss,SSS will be interpreted as the pattern HM:mm:ss and the timezone SSS. If you wish to include a comma in your date pattern, then simply enclose the pattern between quotes. For example, %date{"HH:mm:ss,SSS"}.
F / file Outputs the file name of the Java source file where the logging request was issued.Generating the file information is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue.
caller{depth}caller{depthStart..depthEnd}caller{depth, evaluator-1, ... evaluator-n}caller{depthStart..depthEnd, evaluator-1, ... evaluator-n} Outputs location information of the caller which generated the logging event.The location information depends on the JVM implementation but usually consists of the fully qualified name of the calling method followed by the caller's source, the file name and line number between parentheses.A integer can be added to the caller conversion specifier's options to configure the depth of the information to be displayed.For example, %caller{2} would display the following excerpt:0 [main] DEBUG - logging statement Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)And %caller{3} would display this other excerpt:16 [main] DEBUG - logging statement Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)Caller+2 at mainPackage.ConfigTester.main(ConfigTester.java:38)A range specifier can be added to the caller conversion specifier's options to configure the depth range of the information to be displayed.For example, %caller{1..2} would display the following excerpt:0 [main] DEBUG - logging statementCaller+0 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)This conversion word can also use evaluators to test logging events against a given criterion before computing caller data. For example, using %caller{3, CALLER_DISPLAY_EVAL} will display three lines of stacktrace, only if the evaluator called CALLER_DISPLAY_EVAL returns a positive answer.Evaluators are described below.
L / line Outputs the line number from where the logging request was issued.Generating the line number information is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue.
m / msg / message Outputs the application-supplied message associated with the logging event.
M / method Outputs the method name where the logging request was issued.Generating the method name is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue.
n Outputs the platform dependent line separator character or characters.This conversion word offers practically the same performance as using non-portable line separator strings such as "\n", or "\r\n". Thus, it is the preferred way of specifying a line separator.
p / le / level Outputs the level of the logging event.
r / relative Outputs the number of milliseconds elapsed since the start of the application until the creation of the logging event.
t / thread Outputs the name of the thread that generated the logging event.
X{key:-defaultVal} mdc{key:-defaultVal} Outputs the MDC (mapped diagnostic context) associated with the thread that generated the logging event.If the mdc conversion word is followed by a key between braces, as in %mdc{userid}, then the MDC value corresponding to the key 'userid' will be output. If the value is null, then the default value specified after the :- operator is output. If no default value is specified than the empty string is output.If no key is given, then the entire content of the MDC will be output in the format "key1=val1, key2=val2".See the chapter on MDC for more details on the subject.
ex{depth} exception{depth} throwable{depth} ex{depth, evaluator-1, ..., evaluator-n} exception{depth, evaluator-1, ..., evaluator-n} throwable{depth, evaluator-1, ..., evaluator-n} Outputs the stack trace of the exception associated with the logging event, if any. By default the full stack trace will be output.The throwable conversion word can followed by one of the following options:short: prints the first line of the stack tracefull: prints the full stack traceAny integer: prints the given number of lines of the stack traceHere are some examples:Conversion PatternResult%exmainPackage.foo.bar.TestException: Houston we have a problem at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22) at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17) at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)%ex{short}mainPackage.foo.bar.TestException: Houston we have a problem at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)%ex{full}mainPackage.foo.bar.TestException: Houston we have a problem at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22) at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17) at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)%ex{2}mainPackage.foo.bar.TestException: Houston we have a problem at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22) at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)This conversion word can also use evaluators to test logging events against a given criterion before creating the output. For example, using %ex{full, EX_DISPLAY_EVAL} will display the full stack trace of the exception only if the evaluator called EX_DISPLAY_EVALreturns a negative answer. Evaluators are described further down in this document.If you do not specify %throwable or another throwable-related conversion word in the conversion pattern, PatternLayout will automatically add it as the last conversion word, on account of the importance of stack trace information. The $nopex conversion word can be substituted for %throwable, if you do not wish stack trace information to be displayed. See also the %nopex conversion word.
xEx{depth} xException{depth} xThrowable{depth} xEx{depth, evaluator-1, ..., evaluator-n} xException{depth, evaluator-1, ..., evaluator-n} xThrowable{depth, evaluator-1, ..., evaluator-n} Same as the %throwable conversion word above with the addition of class packaging information.At the end of each stack frame of the exception, a string consisting of the jar file containing the relevant class followed by the "Implementation-Version" as found in that jar's manifest will be added. This innovative technique was originally suggested by James Strachan. If the information is uncertain, then the class packaging data will be preceded by a tilde, i.e. the '~' character.Here is an example:java.lang.NullPointerException at com.xyz.Wombat(Wombat.java:57) ~[wombat-1.3.jar:1.3] at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.5.0_06] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.5.0_06] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.5.0_06] at java.lang.reflect.Method.invoke(Method.java:585) ~[na:1.5.0_06] at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) [junit-4.4.jar:na] at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) [junit-4.4.jar:na] ...etc Logback goes to great lengths to ensure that the class packaging information it displays is correct, even in arbitrarily complex class loader hierarchies. However, when it is unable to guarantee the absolute correctness of the information, then it will prefix the data with a tilde, i.e. the '~' character. Thus, it is theoretically possible for the printed class packaging information to differ from the real class packaging information. So, in the above example, given that packaging data for the Wombat class is preceded by a tilde, it is possible that the correct packaging data is in reality [wombat.jar:1.7].Please note that given its potential cost, computation of packaging data is disabled by default. When computation of packaging data is enabled, PatternLayout will automatically assume the %xThrowable suffix instead of %throwable suffix at the end of the pattern string.Feedback from users indicates that Netbeans chokes on packaging information.
nopex nopexception Although it pretends to handle stack trace data, this conversion word does not output any data, thus, effectively ignoring exceptions.The %nopex conversion word allows the user to override PatternLayout's internal safety mechanism which silently adds the %xThrowable conversion keyword in the absence of another conversion word handling exceptions.
marker Outputs the marker associated with the logger request.In case the marker contains children markers, the converter displays the parent as well as childrens' names according to the format shown below.parentName [ child1, child2 ]
property{key} Outputs the value associated with a property named key. The the relevant docs on how to define ion entitled define variables and variable scopes. If key is not a property of the logger context, then key will be looked up in the System properties.There is no default value for key. If it is omitted, the returned value will be "Property_HAS_NO_KEY", expliciting the error condition.
replace(p){r, t} Replaces occurrences of 'r', a regex, with its replacement 't' in the string produces by the sub-pattern 'p'. For example, "%replace(%msg){'\s', ''}" will remove all spaces contained in the event message.The pattern 'p' can be arbitrarily complex and in particular can contain multiple conversion keywords. For instance, "%replace(%logger %msg){'.', '/'}" will replace all dots in the logger or the message of the event with a forward slash.
rEx{depth} rootException{depth} rEx{depth, evaluator-1, ..., evaluator-n} rootException{depth, evaluator-1, ..., evaluator-n} Outputs the stack trace of the exception associated with the logging event, if any. The root cause will be output first instead of the standard "root cause last". Here is a sample output (edited for space):java.lang.NullPointerException at com.xyz.Wombat(Wombat.java:57) ~[wombat-1.3.jar:1.3] at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3]Wrapped by: org.springframework.BeanCreationException: Error creating bean with name 'wombat': at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) [spring-2.0.jar:2.0] at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) [spring-2.0.jar:2.0] at org.apache.catalina.StandardContext.listenerStart(StandardContext.java:3934) [tomcat-6.0.26.jar:6.0.26]The %rootException converter admits the same optional parameters as the %xException converter described above, including depth and evaluators. It outputs also packaging information. In short, %rootException is very similar to %xException, only the order of exception output is reversed.Tomasz Nurkiewicz, the author of %rootException converter, documents his contribution in a blog entry entitled "Logging exceptions root cause first".

使用注意项

在pattern中括号"()"有特殊含义,如:%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n,可以用来表示一个group,然后对这个group设定格式,所以要使用括号的时候需要用反斜杠转义,如:%date %-5level [%thread] %logger{43}\(%L\) : %msg

格式设定

格式说明

Format modifier Left justify Minimum width Maximum width Comment
%20logger false 20 none Left pad with spaces if the logger name is less than 20 characters long.
%-20logger true 20 none Right pad with spaces if the logger name is less than 20 characters long.
%.30logger NA none 30 Truncate from the beginning if the logger name is longer than 30 characters.
%20.30logger false 20 30 Left pad with spaces if the logger name is shorter than 20 characters. However, if logger name is longer than 30 characters, then truncate from the beginning.
%-20.30logger true 20 30 Right pad with spaces if the logger name is shorter than 20 characters. However, if logger name is longer than 30 characters, then truncate from the beginning.
%.-30logger NA none 30 Truncate from the end if the logger name is longer than 30 characters.

示例

Format modifier Logger name Result
[%20.20logger] main.Name [ main.Name]
[%-20.20logger] main.Name [main.Name ]
[%10.10logger] main.foo.foo.bar.Name [o.bar.Name]
[%10.-10logger] main.foo.foo.bar.Name [main.foo.f]

更多

Logback日志颜色设置等更多特性请参考logback layout。

参考

Logback PatternLayout

转载于:https://www.cnblogs.com/chrischennx/p/6781574.html

Logback Pattern 日志格式配置相关推荐

  1. logback自定义日志格式

    logback自定义日志格式 1.ClassicConverter 继承ClassicConverter package com.demo.conf;import ch.qos.logback.cla ...

  2. nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数

    nginx-ingress设置日志格式-配置转发真实ip-白名单限制 参考官方文档 nginx-ingress官方文档 修改nginx-ingrss的configmap配置文件 apiVersion: ...

  3. Nginx配置-日志格式配置

    Nginx配置-日志格式配置 一.默认的日志格式 二.我使用的日志格式 三.参数 四.测试效果 五一上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下 ...

  4. @slf4j日志格式配置

    使用@Slf4j注解配置日志: 步骤: 在pom.xml中添加lombok; 使用@Slf4j注解: 默认可以使用log.error().log.info().log.debug()等输出: 设置日志 ...

  5. nginx日志格式配置

    nginx作为我们IT中的首选反向代理神器,有时候我们有必要查看nginx中的日志的,但是我们对nginx的日志格式不是很了解怎么办呢?这样以来也是看不懂的. nginx日志 nginx的日志分两种一 ...

  6. Nginx日志格式配置-转载

    最近项目使用到了nginx的反向代理,配置过程中查询了一些nginx日志配置的问题,便于自己学习查询 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是a ...

  7. springboot的日志的默认格式,logback默认日志格式

    今天发现springboot的日志格式挺整齐的,又仔细研究了一下 springboot默认的日志格式,挺好看 %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15 ...

  8. logback应用日志格式参考

    日志作为了解系统运行情况的重要信息来源和参考,规范和完整的日志记录是非常重要的. 根据完善的日志记录,可以获取的信息包括但不限于以下: 了解应用系统运行性能情况,各个关键业务处理步骤的响应时间,单位时 ...

  9. HAproxy Json日志格式配置

    通过日志工作分析日志时,非json日志分析起来比较麻烦.通过以下的配置,可以让生成的日志为json. log-format {"haproxy_clientIP":"%c ...

最新文章

  1. asp常用函数(备忘)
  2. Mysql事务字符集
  3. 机器人学习--感知环境数据集
  4. java怎么导入图片_iPad Pro插U盘不能导入图片?技术宅教你怎么做
  5. 各种数据结构性能的比较
  6. Orchard架构介绍
  7. Val编程-按键响应模式
  8. CentOS下安装7-zip
  9. VS2017 修改文件编码为UTF-8的插件
  10. 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
  11. java同步器有哪些_java 同步器 Semaphore、
  12. 快速学会网页中鼠标经过图片放大效果
  13. 真人玩计算机图片大全集,微信真人表情图片大全 用自己的照片做微信真人表情包(好玩),各类搞笑素材任你选择...
  14. 免服务器软件库源码实现超级管理动态发布会员系统卡密系统充值对接卡密网软件发布板块后台功能 软件商店1.3.1
  15. java continue语句_Java continue 语句
  16. STM32DAC输出遇到的问题
  17. EFR32--如何在EFR32程序中修改UUID
  18. C语言练习1-判断四根木棍是否可以摆成三角形
  19. HttpReques
  20. Python 图形化界面设计

热门文章

  1. uniapp怎么引入css_uniapp - css样式设置scoped
  2. Linux目录结构和常用命令
  3. Android--获取apk大小
  4. 8K投影仪+大银幕,日本系统Sphere5.2不用头显也能体验VR
  5. cnblogs url temp
  6. WindowsPhone7真机部署和调试程序
  7. “外星人”字符串生成算法研究
  8. 前端的面试之旅(一)
  9. Codeforces 463E Caisa and Tree
  10. App推荐 | Google Tasks