2017-06-05 107 views
3

我正在开发一个应用程序,使用我的另一个项目作为maven依赖项。Logback覆盖依赖关系logback.xml

期望

我想用自己的logback.xml登录自己的文件我的依赖。 我希望应用程序使用它自己的logback.xml文件来登录控制台和一个单独的文件,而不是依赖项。我希望这两个文件都位于应用程序jar附近的日志文件夹中。

现在做什么

但同时为应用程序和依赖使用应用程序的logback.xml,一切都在控制台,并在同一个文件中记录的时刻。

我该如何解决这个问题?

详细了解项目

都使用的logback作为一个记录器。依赖关系是一种协议实现,它将通信信息记录在文件中,该文件必须位于与应用程序日志不同的文件中。 应用程序和依赖项都具有经典的maven结构,其中包含资源文件夹中的logback.xml文件。

依赖性logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{HH:mm:ss}|%msg%n 
     </Pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>./log/communications.%d{yyyy-MM-dd}.%i.log 
     </fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 

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

</configuration> 

应用logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </layout> 
</appender> 
<appender name="FILEAPPLI" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{HH:mm:ss}|%msg%n 
     </Pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>./log/debugfileappli.%d{yyyy-MM-dd}.%i.log 
     </fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 

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

</configuration> 

回答

0

我发现了一个解决方案。在我的依赖代码中,我调用一个特定的记录器名称。

private static final Logger logger = LoggerFactory.getLogger("dependencyLogger"); 

而且我在我的应用程序logback.xml

<logger name="dependencyLogger" level="debug"> 
    <additivity="false"> 
    <appender-ref ref="FILE-AUDIT" /> 
    <appender-ref ref="STDOUT" /> 
</logger> 

这样我可以处理这个声明作为记录我希望所有从依赖单一logback.xml日志