首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效组合使用logback、lombok和Spring 2.4

高效组合使用logback、lombok和Spring 2.4
EN

Stack Overflow用户
提问于 2021-03-12 08:53:57
回答 2查看 2.6K关注 0票数 1

Lombok提供了一个@Log注释,并支持(除其他外)这些日志记录框架:

  • 共用测井
  • Slf4J
  • Log4J
  • ..。

Logback不在受支持的日志框架列表中,但是Spring使用logback作为它的默认实现(如果是我的源是正确的)

我如何利用lomboks注释而不必添加更多的日志框架或“转换器”?使用@CustomLoglombok.log.custom.declaration是我唯一的选择吗?

EN

回答 2

Stack Overflow用户

发布于 2021-03-12 10:03:39

Spring (2.4) starter-logging默认使用Logback实现SLF4J API,因此使用Lombok进行日志记录的最简单方法是在类上添加@Slf4j,并使用log (Sl4j Logger类)直接记录日志消息。

代码语言:javascript
运行
复制
@Component //spring components
@Slf4j // from Lombok
class MyComponent{

    void foo(){
        log.info("test foo");
    }

}

Spring 5内部引入了一个新的日志记录实现。在上一个版本中,Spring依赖于。Spring 5添加了一个新的模块spring-jcl,它删除了依赖项commons-logging,但是它仍然从commons-logging重用Log接口,并提供一个简单的实现来在类路径中迭代记录器提供程序并检查Slf4j、Log4j 2等的存在。如果找到它,这个日志将被委托给底层日志框架。如果没有找到,它将使用Log的简单实现中的回退处理来处理日志记录。有关更多细节,请查看Spring中的LogAdapter的源代码

这意味着在Spring中添加starter-logging(默认情况下使用sfl4j/logback)并且没有包含其他日志框架,尽管您使用的是Lombok @Log( Lombok将使用Apachecommons-logging Log接口),它将被委托给starter-logging提供的Slf4j。

要使用Log4j2,将stater日志从web/webflux启动器中排除,并添加starter-log4j2(可以选择切换到Lombok @Log4j2)。

对于Logback和Log4j2,Spring提供了一个额外的配置文件感知配置功能。例如:logback-spring.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOGS" value="./logs"/>

    <appended ...>
    //....
    <springProfile name="staging"> <!-- profile specific config -->
        <logger .../>
    </springProfile>
</configuration>

因此,您可以根据所使用的Spring配置文件在运行时切换详细的日志配置,检查Spring文档的测井段

票数 2
EN

Stack Overflow用户

发布于 2021-03-12 09:38:55

差不多就是起作用了。将logback的配置文件(logback-spring.xml)添加到类路径(例如resources文件夹)中,然后在类中使用@Log创建记录器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66596836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档