标签: logback

从logback配置文件中读取环境变量

我有这个logback.xml文件:

<configuration debug="true" scan="true" scanPeriod="60 seconds">

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

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${MY_HOME}/logs/mylog.log</File>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>logs/my.%d{yyyy-MM-dd}.log</FileNamePattern>
      <MaxHistory>30</MaxHistory>
    </rollingPolicy>

    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</Pattern>
    </layout>

  </appender> 

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

</configuration>
Run Code Online (Sandbox Code Playgroud)

并且${MY_HOME}是一个已定义的系统变量(echo $MY_HOME在linux上显示正确的路径).

问题是,logback似乎没有正确读取它,它存储日志 MY_HOME_IS_UNDEFINED/logs/my.log

我究竟做错了什么?非常感谢!

编辑:我犯了一个错误,把OSC_HOME放在我真正意味着MY_HOME的地方.对于那个很抱歉

java logging environment-variables logback

59
推荐指数
3
解决办法
7万
查看次数

spring boot,logback和logging.config属性

我使用logback库实现了一个spring boot项目的日志记录.我想根据我的spring配置文件(属性'spring.pofiles.active')加载不同的日志配置文件.我有3个文件:logback-dev.xml,logback-inte.xml和logback-prod.xml.我使用的是春季启动版本1.2.2.RELEASE.

正如您可以阅读spring boot文档(此处).它说:

可以通过在类路径中包含适当的库来激活各种日志记录系统,并通过在类路径的根目录中提供合适的配置文件或在Spring Environment属性logging.config指定的位置进一步自定义.(但请注意,由于在创建ApplicationContext之前初始化日志记录,因此无法在Spring @Configuration文件中控制@PropertySources的日志记录.系统属性和传统的Spring Boot外部配置文件工作正常.)

所以我尝试在application.properties文件中设置'logging.config'属性:

logging.config=classpath:/logback-${spring.profiles.active}.xml
Run Code Online (Sandbox Code Playgroud)

但是,当我启动我的应用程序时,我的logback- {profile} .xml未加载...

我认为日志记录是所有使用spring boot的项目遇到的常见问题.我想知道我是否在正确的方向,因为我有其他解决方案,但我觉得它们不优雅(在logback.xml文件或命令行属性中使用Janino进行条件解析).

java logging spring logback spring-boot

53
推荐指数
5
解决办法
8万
查看次数

将所有Logback输出抑制到控制台?

如何配置Logback以抑制其到控制台的所有输出(标准输出)?特别是,我希望抑制(或重定向)Logback自己的日志消息,如下所示:

16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,923 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:50:25,924 |-INFO in ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter@1a15291 - Will scan for changes in file [/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml] every 60 seconds. 
Run Code Online (Sandbox Code Playgroud)

我需要禁用所有日志记录到标准输出,因为我们的生产环境不允许应用程序将任何消息打印到标准输出.

注意我正在使用Logback …

java configuration logback

52
推荐指数
5
解决办法
4万
查看次数

如何设置commons-logging以使用logback?

我们使用slf4j + logback,碰巧有一些使用commons-logging的第三方库.如何设置它以使用logback?

java logging logback apache-commons-logging

52
推荐指数
3
解决办法
2万
查看次数

滚动日志记录文件大小和时间

我一直在尝试设置一个简单的logback项目来按日期和文件大小滚动我的日志文件,到目前为止,我一直无法让我的appender转到另一个文件.而是写入<file />标记指定的日志.

这是我的logback.xml配置文件:

<?xml version="1.0"?>
<configuration scan="true" scanPeriod="10 seconds">
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </layout>
    </appender>

    <appender name="milliroller" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log/output.log</file>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </layout>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1KB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="stdout"/>
        <appender-ref ref="milliroller"/>
    </root>

    <logger name="com.tkassembled.logback" level="DEBUG"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)

乍一看,它看起来应该有效,对吗?有什么我做错了吗?我的整个可构建项目都可以在这里找到:http://www.mediafire.com/file/2bxokkdyz2i/logback.zip

java logging logback

51
推荐指数
2
解决办法
8万
查看次数

logback:两个appender,多个记录器,不同级别

我想在我的应用程序(Spring Integration),debug.log和main.log中有两个日志文件.我想在INFO级别运行main.log,在DEBUG级别运行debug.log.这对于appender上的过滤器是可行的.我想根据源记录不同级别的appender.换一种说法

<logger name="org.springframework" level="ERROR">
    <appender-ref ref="main" />
</logger>
<logger name="org.springframework" level="DEBUG">
    <appender-ref ref="debug" />
</logger>
<logger name="com.myapp" level="INFO">
    <appender-ref ref="main" />
</logger>
<logger name="com.myapp" level="DEBUG">
    <appender-ref ref="debug" />
</logger>
Run Code Online (Sandbox Code Playgroud)

总结一下:

  1. 春季记录器
    • 主要 - >错误
    • debug - > DEBUG
  2. com.myapp记录器
    • 主要 - >信息
    • debug - > DEBUG

因此,我必须让记录器在DEBUG上运行,并且在appender上的阈值过滤器不够精细.

更新添加了问题的清晰度

java logging logback

51
推荐指数
4
解决办法
7万
查看次数

如何通过JUnit测试拦截SLF4J日志记录?

是否有可能以某种方式拦截日志记录(SLF4J + logback)并InputStream通过JUnit测试用例获取(或其他可读的内容)......?

java junit logback slf4j

49
推荐指数
7
解决办法
4万
查看次数

如何在logback中启动时滚动日志文件

我想配置logback来执行以下操作.

  • 登录到文件
  • 达到50MB时滚动文件
  • 只保留7天的日志
  • 在启动时总是生成一个新文件(滚动)

除了最后一项,启动滚动,我已经完成了所有工作.有谁知道如何实现这一目标?这是配置......

  <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">

    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg \(%file:%line\)%n</Pattern>
    </layout>

    <File>server.log</File>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>server.%d{yyyy-MM-dd}.log</FileNamePattern>
      <!-- keep 7 days' worth of history -->
      <MaxHistory>7</MaxHistory>

      <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <MaxFileSize>50MB</MaxFileSize>
      </TimeBasedFileNamingAndTriggeringPolicy>

    </rollingPolicy>
  </appender>
Run Code Online (Sandbox Code Playgroud)

java startup logback appender

44
推荐指数
5
解决办法
3万
查看次数

如何在单个项目中使用多个配置和回溯?

用于回溯的配置文件可以在类路径中找到,因此是特定于Eclipse项目的,这不是我想要的.我正在使用多个Java实用程序,它们都驻留在一个项目中(这个共享类路径),我需要为其中一些使用特定的配置.

我尝试过变量替换和Joram配置器,但没有什么对我有用.这很可能是我的错,我有一天会解决它,但是现在我需要一个简单的解决方案.

java configuration logging logback

43
推荐指数
1
解决办法
2万
查看次数

运行Spring-Boot时忽略-Dlogback.configurationFile = logback.xml

我们有一个spring-boot 1.0.RC1应用程序,其中配置了用于日志记录的logback和src/test/resources中的logback.xml文件.当我们从maven运行spring-boot时,似乎可以看到并遵守logback文件.(这是我们在spring-boot徽标之后所需的日志记录格式)

D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel>mvn  clean spring-boot:run -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile=src/test/resources/logback.xml

<snip/>

[INFO] --- spring-boot-maven-plugin:0.5.0.M7:run (default-cli) @ my-app-camel ---
06:41:56,011 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [src/test/resources/logback.xml] at [file:/D:/Users/myName/My%20Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml]
06:41:56,150 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
06:41:56,170 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 5 seconds
06:41:56,171 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel\src\test\resources\logback.xml]] every 5 seconds.
06:41:56,172 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
06:41:56,223 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to …
Run Code Online (Sandbox Code Playgroud)

spring logback spring-boot

42
推荐指数
4
解决办法
5万
查看次数