logbak日志单独打印(方法层级)

logbak日志单独打印

问题

前几天朋友在群里问,怎么针对方法打印打印日志,不是针对类。

解决办法

方法层
java 复制代码
   @GetMapping("getLog1")
    public String getLog1(){

        Logger specialLogger = LoggerFactory.getLogger(TestController.class.getName() + ".getLog1");
        specialLogger.info("Special log message for methodWithSpecialLogging");

        return "success";
    }
logback 配置文件
xml 复制代码
    <logger name="com.test.controller.TestController.getLog1" level="INFO">
        <appender-ref ref="getLog1" />
    </logger>


    <appender name="getLog1" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/getLog.%d{yyyy-MM-dd-HH}.%i.log</fileNamePattern>
            <MaxHistory>10</MaxHistory>
            <maxFileSize>200MB</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} %-5level [%X{REQUEST_IP}][%X{TRACE_ID}][%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

这一步已经做到根据方法打印log日志,但是朋友的具体需求竟然是针对每调用一次方法,生成一个配置文件

直接在方法层实现

每调用一次,输出一份文件

java 复制代码
  @GetMapping("getLog")
    public String getLog(){

        // 创建新的 Logger 实例
        Logger logger = LoggerFactory.getLogger(TestController.class);

        // 获取 Logger 的上下文
        ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger;
        ch.qos.logback.classic.LoggerContext loggerContext = logbackLogger.getLoggerContext();

        // 设置该 Logger 实例的 Appender,即日志输出到单独的文件中
        ch.qos.logback.core.FileAppender<ch.qos.logback.classic.spi.ILoggingEvent> fileAppender = new ch.qos.logback.core.FileAppender<>();
        fileAppender.setFile("path/getLog_" + System.currentTimeMillis() + ".log");
        fileAppender.setContext(loggerContext);
        fileAppender.start();

        // 将 Appender 添加到 Logger 实例中
        logbackLogger.addAppender(fileAppender);
        // 设置日志级别
        logbackLogger.setLevel(Level.INFO);

        // 输出日志
        logger.info("Special log message for methodWithSpecialLogging");

        return "success";

    }
相关推荐
1024奇点2 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch2 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
天河归来3 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL3 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing034 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
by209994 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河4 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮5 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻5 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble5 小时前
C++ 用互斥锁实现读写锁
开发语言·c++