标签: logback

回滚变量替换无法在类路径上找到属性文件

我非常喜欢Logback支持登录数据库.但是,我在使用Logback的变量替换功能时遇到了麻烦,更具体地说,是使用了类路径上的属性文件.

我的参考:http://logback.qos.ch/manual/configuration.html#variableSubstitution

所以我有一个多模块Maven项目.在我的web模块(生成.war文件)中,我在以下目录中有我的Logback conf文件:

src/main/reesources
- logback.xml
- local.properties
- dev.properties
Run Code Online (Sandbox Code Playgroud)

我的logback.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property file="${env}.properties"/>

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

    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <driverClass>${logback.db.driverClassName}</driverClass>
                <jdbcUrl>${logback.db.url}</jdbcUrl>
                <user>${logback.db.user}</user>
                <password>${logback.db.password}</password>
            </dataSource>
        </connectionSource>
    </appender>

    <root level="debug">
        <appender-ref ref="DB" />
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

所以当我调出Tomcat服务器时,我会像这样传递$ {env}:

-Denv=local
Run Code Online (Sandbox Code Playgroud)

但是,当我启动服务器时出现以下错误:

17:45:22,782  WARN com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0 DriverManagerDataSource:107 - Could not load driverClass logback.db.driverClassName_IS_UNDEFINED
java.lang.ClassNotFoundException: logback.db.driverClassName_IS_UNDEFINED
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
Run Code Online (Sandbox Code Playgroud)

看起来Logback Joran无法找到属性文件.

任何人都可以让我知道我做错了什么?

java logging logback maven

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

没有用于文件的嵌入式样式表指令:使用logback的错误

我有以下logback.xml配置:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %highlight(%-5level) %cyan(%logger{35}) - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" /> 

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

如果我在eclipse(juno)中编辑配置文件,我会收到以下错误:

11:02:54,114 INFO  [main] Main  - javax.xml.transform.TransformerFactory=null
11:02:54,115 INFO  [main] Main  - java.endorsed.dirs=C:\Program Files\Java\jre7\lib\endorsed
11:02:54,117 …
Run Code Online (Sandbox Code Playgroud)

eclipse logback

13
推荐指数
1
解决办法
3万
查看次数

如何在spring-boot中为ANSI颜色功能配置logback?

我有一个在Windows上运行的spring-boot应用程序.我在我的项目中添加了jansi(v1.8)依赖项,用于在Windows上启用彩色终端输出.

包含了spring-boot中提供的logback配置,即在logback.xml中添加了以下行.

<include resource="org/springframework/boot/logging/logback/base.xml" />
Run Code Online (Sandbox Code Playgroud)

我不清楚在logback.xml中配置什么,以便它的日志语句按照spring-boot提供的base.xml进行着色.对不起,如果是一个非常愚蠢的问题,我是一个新手回归.

谢谢 !

logback spring-boot

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

在ERROR级别日志事件上使Logback抛出异常

运行单元测试时,我想在记录ERROR级别消息的任何测试中失败.使用SLF4J/Logback实现此目的的最简单方法是什么?我想避免编写自己的ILoggerFactory实现.

我尝试编写自定义Appender,但我不能通过调用Appender的代码传播异常,Appender的所有异常都会被捕获.

unit-testing logback slf4j

13
推荐指数
1
解决办法
986
查看次数

spring-boot从1.3.2升级到1.3.3:logback问题

从spring-boot 1.3.2升级到最近发布的1.3.3时,我们遇到了一个问题.

我们的应用程序一直在使用以下依赖项,每个依赖项都是最新的,没有问题:

    <neo4j.version>2.3.2</neo4j.version>
    <sdn.version>4.0.0.RELEASE</sdn.version>
    <sdn.rest.version>3.4.0.RELEASE</sdn.rest.version>
    <neo4j.ogm.version>1.1.5</neo4j.ogm.version>
Run Code Online (Sandbox Code Playgroud)

今天我升级了我们的spring-boot和基于Spring Data Neo4j的应用程序,该应用程序通过更改pom.xml从以下内容启动并与spring-boot 1.3.2.RELEASE一起运行良好:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.2.RELEASE</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

由于这实际上是唯一的变化,应用程序现在无法启动以下错误:

...

Failed to instantiate [ch.qos.logback.classic.LoggerContext]
Reported exception:
java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qos/logback/core/pattern/Converter;)V
    at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:88)
    at ch.qos.logback.classic.encoder.PatternLayoutEncoder.start(PatternLayoutEncoder.java:28)
    at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.java:167)
    at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:317)
    at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:196)
    at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:182)
    at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)
    at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:77)
    at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:152)
    at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
    at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:143)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:122)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:378)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:328)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:349)
    at com.mycompany.Application.<clinit>(Application.java:35)
Run Code Online (Sandbox Code Playgroud)

正如所料,返回1.3.2.RELEASE不会导致任何问题.

到目前为止搜索显示没有可追踪的踪迹.比较mvn dependency:tree使用spring-boot 1.3.2.RELEASE和1.3.3.RELEASE之间的输出,我可以看到ch.qos.logback:logback-classic和ch.qos.logback:logback-access …

spring logback neo4j spring-boot spring-data-neo4j-4

13
推荐指数
1
解决办法
8985
查看次数

Spring启动多个日志文件

在我的带有"@ Slf4j"注释类的Spring启动项目中,对于某些类,我想要记录到不同的文件.但无法弄清楚如何做到这一点.我有一个logback-spring.xml文件,它从我的属性文件中引用,如下所示:

logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log
Run Code Online (Sandbox Code Playgroud)

我现在必须创建另一个logback-spring.xml文件吗?或者我可以在当前文件中配置它,如果那样,我该如何选择使用哪个记录器.

logging spring logback spring-boot

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

如何启用Ehcache的日志记录

在我的Spring + Hibernate项目中,我使用LogBack通过SLF4J 1.6.4进行日志记录.现在,我添加了Ehcache 2.2.0(通过ehcache-spring-annotations-1.1.3).缓存似乎是作为方法工作,使用@Cacheable注释,不再执行,但返回正确的结果.但是,我有兴趣看到Ehcache写的日志.由于Ehcache也使用SLF4J,我想,日志应该写入我的日志文件中.但是,这种情况并没有发生.logback.xml具有以下内容.

 <root level="info">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="ROLLING"/>
</root>
Run Code Online (Sandbox Code Playgroud)

添加以下内容也无济于事

 <logger name="net.sf.ehcache"> 
</logger> 
Run Code Online (Sandbox Code Playgroud)

ehcache.xml中

    <cache name="sampleCache1"
       eternal="false"
       overflowToDisk="true"
       timeToIdleSeconds="300"
       timeToLiveSeconds="600"           
       memoryStoreEvictionPolicy="LFU"           
        />
Run Code Online (Sandbox Code Playgroud)

请告诉我克服这个问题.

Ehcache正在使用SLF4J 1.6.1,而我的项目正在使用SLF4J 1.6.4.它会引起任何问题吗?

谢谢

spring ehcache logback slf4j

12
推荐指数
4
解决办法
3万
查看次数

如何配置Logback以将主机名/ IP添加到每个日志事件?

我正在使用Logback进行日志记录.Scribe appender将日志实时发送到中央Scribe聚合器.但我不知道如何在日志中为每个日志事件添加源机器IP.查看聚合的中央Scribe日志,几乎不可能知道哪台计算机正在发送日志.因此,将源计算机的IP附加到每个日志事件将会很有帮助,如果我们可以通过logback配置来控制它,那将非常好.

logback

12
推荐指数
3
解决办法
1万
查看次数

创建每个在logback中运行的新日志文件?

每次应用程序运行时如何创建新的日志文件?

我想以任何方式保留以前的日志.例如,我更愿意按创建时间和日期命名每个新日志文件.否则,我同意将旧日志文件备份到日期和时间文件名中.

不幸的是,我在这里看不到合适的政策和/或触发器:http://logback.qos.ch/manual/appenders.html

UPDATE

我做了大约如"复制"中说的那样

    <appender name="ROUTINEAPPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/routine.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/routine%d{yyyyMMdd}%d{HHmmss,aux}.log</fileNamePattern>
            <TimeBasedFileNamingAndTriggeringPolicy class="com.inthemoon.toolkit.StartupTimeBasedTriggeringPolicy" />
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} - %C{0} - %msg%n</pattern>
        </encoder>
    </appender>
Run Code Online (Sandbox Code Playgroud)

但我的班级com.inthemoon.toolkit.StartupTimeBasedTriggeringPolicy从未被召唤过.我把断点放在start()方法中,但它从未提出过.

此外,不会发生滚动.日志文件已创建,但始终具有名称routine.log.

此外,我不明白,如何参数filefilenamePattern应该共存.

更新2

我有固定的UPDATE 1类参考,但仍然没有我需要的.在给定的解决方案中,日期时间将插入OLD日志文件名中.例如,如果我在2013年运行程序,它就会创建routine.log.然后我等了一年,并在2014年运行程序.将创建新的日志文件并具有名称routine.log,而OLD 2013日志将被放入routine2014XXXXXXXXXX.log,这是绝对无关紧要的.

我需要在每次程序启动时创建新文件,并将此文件标记为日期时间戳.

java logback

12
推荐指数
1
解决办法
4955
查看次数

logback:[编码器]没有适用的操作,当前的ElementPath是[[configuration] [appender] [encoder]]

我编写了一个用于回退的Appender并将日志保存到ElasticSearch中,然后将此appender添加到logback.xml.我将它应用到一个应用程序中,我从ES获取日志.

但是当我将它应用到另一个应用程序时,logback显示以下错误:

16:18:26,040 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender]
16:18:26,062 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [dashcamAppender]
16:18:26,078 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@110:12 - no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]]
16:18:26,080 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@111:13 - no applicable action for [Pattern], current ElementPath is [[configuration][appender][encoder][Pattern]]
Run Code Online (Sandbox Code Playgroud)

我的logback.xml是:

...
<appender name="dashcamAppender"
        class="com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender">
    <encoder>
        <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>TRACE</level>
    </filter>
</appender>
...
Run Code Online (Sandbox Code Playgroud)

丢失一些动作(或如何添加它们)进行回溯?

java logging logback

12
推荐指数
1
解决办法
8269
查看次数