如何在执行方法时编写和保存日志文件(通过应用程序属性设置级别)

时间:2018-05-25 13:17:00

标签: java spring-boot logging logback

我是Springboot的新手,我需要帮助,我想执行一个方法来保存带有变量值的日志文件,我在logback.xml中插入了参数但是在运行应用程序时生成了日志,并以白色生成。 另外,我通过环境变量定义了我的日志级别,如何使用已经在我的应用程序属性中的这个变量? 非常感谢你

<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${user.home}/bws.log</file>
    <append>false</append>
    <encoder>
        <pattern>%-5relative %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>

    </encoder>
</appender>

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

应用程序属性     bws.log.level = $ {BWS_LOG_LEVEL}

日志类     @零件 公共类日志{ private static String myLevelLog;

@Value("${bws.log.level}")
public void setLevel(String lv){
    myLevelLog=lv;
}

private static final Logger logger
        = LoggerFactory.getLogger(Logs.class);

public static void totalAlunos(int al){
    logger.debug("Total de alunos no banco de dados:"+ al, Logs.class.getSimpleName());
    // This is what I need to write to the log file, but getting the level I set up through my environment variables
}

}

1 个答案:

答案 0 :(得分:0)

您可以在logback xml文件中为您的appender添加过滤器。

<filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>${BWS_LOG_LEVEL}</level>
</filter>

这将确保logback仅保存${BWS_LOG_LEVEL}级别的邮件。

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
     <level>${BWS_LOG_LEVEL}</level>
</filter>

LevelFilter相比,ThresholdFilter会在等级上开火  等于或高于指定的${BWS_LOG_LEVEL}

<强>已更新

我注意到你没有激活你的appender,尝试像

这样的东西
<root level="DEBUG">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
</root>

这会将所有包中的日志传递给STDOUTFILE appender。如果只想为特定包设置appender,只需添加logger:

<root level="INFO">
    <appender-ref ref="STDOUT"/>
</root>
<logger name="your.package.here.Logs" level="off" additivity="false">
  <appender-ref ref="FILE"/>
</logger>

这将传递所有考虑STDOUT的日志,此外,包/类your.package.here.Logs中的所有日志都将传递给FILE appender。