在我的外部库Jar

时间:2015-11-24 06:32:41

标签: java maven jar dependency-properties logback

我通常使用下面的Logback.xml和application.properties包来获得我所需要的一切。 Logback.xml:

<configuration>

    <!-- External properties -->
    <property file="./application.properties" />    <!-- for build -->

    <timestamp key="byDate" datePattern="yyyyMMdd"/>

    <!-- Send messages to System.out - CONSOLE -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
        <withJansi>true</withJansi>
    </appender>

    <!-- Send messages to a rolling file -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${logging.path}/${spring.application.name}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover. Make sure the path matches the one in the file element or else the rollover logs are placed in the working directory. -->
            <fileNamePattern>${logging.path}/${spring.application.name}_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>

    </appender>

    <root level="${logging.level}">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

application.properties:

spring.application.name=MyApp

#Logging Settings
logging.level=INFO
logging.path=/data/MyApp/logs/
logging.config=/data/MyApp/Logback.xml

但是现在我正在尝试编写一个外部Jar,我将在其他项目中包含它。但是我的“其他项目”已经有了Logback.xml和application.properties,我希望外部Jar也会使用它。我试图在外部Jar项目中没有放置Logback.xml和application.properties,我想它会找到Logback.xml。但它不起作用。当我从外部Jar调用某些东西时,我没有看到任何日志消息。你能帮助我吗,在这种情况下该怎么办?顺便说一句,如果它是importanl我使用Maven建设和依赖。所以我构建了外部Jar并将其包含在我的项目中:

<dependency>
            <groupId>com.myapp.someprovider</groupId>
            <artifactId>SomeAppProvider</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>/Users/me/Projects/Java/Server/SomeAppProvider/target/SomeAppProvider-1.0.0.jar</systemPath>
        </dependency>

提前致谢!

1 个答案:

答案 0 :(得分:1)

记录配置和属性文件应该位于您构建的最终二进制的主资源文件夹(例如,如果您正在使用maven的src / main / resources)中(例如.war项目,如果你正在构建一个Web应用程序)。此中央日志配置文件需要包含完整应用程序的完整日志配置,包括您依赖的任何jar。

如果模块中需要单独的日志配置文件(例如用于测试目的),则应将这些文件放在测试资源文件夹中(例如,maven的src / test / resources)。

作为旁注,您通常应该尽量避免在maven依赖项中使用systemPath。像你在你的例子中那样对系统路径进行硬编码就是在乞求麻烦,特别是在涉及更多人的项目中。