我是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
}
}
答案 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>
这会将所有包中的日志传递给STDOUT
和FILE
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。