如何把工程名称写到logback日志中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把工程名称写到logback日志中相关的知识,希望对你有一定的参考价值。

参考技术A <configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>$USER_HOME/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="FILEBACK" class="ch.qos.logback.core.FileAppender">
<file>$USER_HOME/myApp_bak.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
<appender-ref ref="FILEBACK" />
</root>
</configuration>
2.场景二:想将一个web项目部署在同一台机器上的两个web容器中,但是同时日志又想单独输出。
解决办法:给web容器启动脚本一个不同的参数,设置输出目录,让logback去读
启动脚本加入 java -DUSER_HOME="/home/sebastien" JavaWeb
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>$USER_HOME/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
3.场景三:想给日志文件每次一个相对唯一的名字。
解决办法:使用时间戳作为文件名
<configuration>
<!-- Insert the current time formatted as "yyyyMMdd'T'HHmmss" under
the key "bySecond" into the logger context. This value will be
available to all subsequent configuration elements. -->
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<!-- use the previously created timestamp to create a uniquely
named log file -->
<file>log-$bySecond.txt</file>
<encoder>
<pattern>%logger35 - %msg%n</pattern>
</encoder>
</appender>

<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>本回答被提问者和网友采纳

java - Logback获取方法名称


 

 

 

 

java - Logback获取方法名称

技术分享图片

摘自: https://blog.csdn.net/qq853632587/article/details/78222780

我们目前正在从 Log4J 迁移到 Logback,但是在获取触发日志的"原"方法名称时遇到了问题。

我叫它"原",因为我们有一个集中的记录器类( 隐藏和操作某些日志) 和日志中显示的方法名称。

在 Log4J 中,我们能够正确获取"原"方法名。

Logback是否能够获得它?

记录器参数:

Log4J

<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss,SSS} %5p [%F] - %M() - %m%n"/>

Logback

<pattern>%d{"dd-MM-yyyy HH:mm:ss,SSS"} %-5level [%logger - %M] - %msg%n</pattern>

结果:( 方法名称- 类名)

Log4J

doLogTester1 - a.Tester1  doLogTester2 - b.Tester2  doLogTester1 - a.Tester1  doLogTester2 - b.Tester2 

Logback

processLog - a.Tester1  processLog - b.Tester2  processLog - a.Tester1  processLog - b.Tester2 

编辑 - 完整示例

Main.java

public class Main { private static final LoggerCommon logger = new LoggerCommon(Main.class); public static void main(String[] args) {  logger.doLog("I‘m on the Main class in the main method"); } }

LoggerCommon

log4j

import org.apache.log4j.Level; import org.apache.log4j.Logger; public class LoggerCommon { private static Logger logger; public LoggerCommon(Class<?> c) {  logger = Logger.getLogger(c); } public void doLog(String message) {  logger.log(LoggerCommon.class.getName(), Level.INFO, message, null); } }

logback

import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerCommon { private Logger logger; public LoggerCommon(Class<?> c) {  logger = LoggerFactory.getLogger(c); } public void doLog(String message) {  logger.info(message); } }

config配置

log4j

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CA" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%M - %F - %m%n"/> </layout> </appender> <root> <level value="debug"/> <appender-ref ref="CA"/> </root> </log4j:configuration>

logback

<configuration> <appender name="CA" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%M - %logger - %msg %n</pattern> </encoder> </appender> <root level="TRACE"> <appender-ref ref="CA"/> </root> </configuration>

 


以上是关于如何把工程名称写到logback日志中的主要内容,如果未能解决你的问题,请参考以下文章

为什么要使用logback 日志框架?

logback的使用笔记

你真的了解logback吗?

logback介绍和配置详解

Springboot 配置Slf4j + Logback

Loglogback指定配置文件