账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    logback如何将不同的业务日志分开输出
    44
    0

    用logback输出日志,想要把不同业务的日志输出到不同的文件中。

    现在有一个包 com.manage.ddd ,该包下的业务比较特殊,希望与其他模块的日志分开显示,
    但是在实际的开发中 , com.manage.ddd下的类调用了大量其他包中的工具类(所有模块共同调用), 工具类中的日志能否 当由 com.manage.ddd下的类调用 时输出到文件a中,其他包中类调用时输出到文件b中

    现配置如下:

      <!--创建一个测试类,将日志打印到特定的文件中去-->
    <appender name="xjkUserAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/testLog222.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>12</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <Pattern>${log.content}</Pattern>
        </encoder>
    </appender>
    
      <logger name="com.controller.business.ElkLogsController" level="INFO" additivity="false">
        <appender-ref ref="xjkUserAppender"/>
       <!-- <appender-ref ref="xjkUserAppender"/>-->
    </logger>
    
    

    以上配置能将ElkLogsController中的日志分开输出,但是对于调用的工具类中的日志,无法分开输出

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 汐颜兮梦 普通会员 1楼

      在Logback中,你可以使用不同的文件来存储不同的业务日志,这样可以提高日志的可读性和可维护性。以下是一个例子:

      1. 首先,创建一个日志文件,例如app.log

      bash touch app.log

      1. 在Logback配置文件(通常是logback.xml)中,添加以下配置:

      ```xml app.log %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

      <root level="debug">
          <appender-ref ref="FILE" />
      </root>
      

      ```

      在这个配置中,我们创建了一个名为FILE的Appender,它将日志写入app.log文件。然后,我们创建了一个名为root的RootAppender,它将所有日志都写入到根文件中。

      1. 在你的代码中,使用appender-ref属性来引用不同的Appender:

      java FileAppender fileAppender = (FileAppender) appenderRef.get(); FileAppender consoleAppender = (FileAppender) appenderRef.get("console");

      在这个例子中,我们创建了两个不同的Appender,一个用于app.log文件,另一个用于console.log文件。

      这样,你就可以根据需要将不同的业务日志分开输出了。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部