LOGBACK:将日志写入类路径中的文件

时间:2013-11-02 04:50:55

标签: java maven classpath logback

我最近开始使用Logback并正在浏览官方文档。在我的一个项目中实现它时,我想知道是否有办法将日志写入类路径上的文件或目标文件夹/ logs / myapp.log中的某个位置?我找不到关于官方文档的更多信息(是的,我读过变量替换)。

这是我的logback.xml:

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>clientLog.log</file>
        <append>true</append>
        <!-- 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>


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

    </root>

</configuration>

现在我希望在目标文件夹(MAVEN项目)中创建clientLog.log文件。任何指针都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

我怀疑你会找到一个标准机制来写入应用程序类路径上的文件。类路径上的东西通常是只读的。

类似地,您将找不到在构建环境中某些位置明确支持日志的机制(例如“目标”目录)。应用程序通常不在构建环境中运行。

所以最实用的解决方案可能是有两个独立的日志配置文件;即一个用于您的开发平台,另一个用于您的部署平台。在不同的日志记录配置文件中使用不同的日志文件路径名。


如果相对路径名target/logs/clientLog.log不起作用,那么当您的应用程序(例如tomcat服务器)启动时,某些东西可能正在改变“当前目录”。但是(AFAIK)这对Tomcat来说是正常的。

答案 1 :(得分:2)

如果我理解了您的问题,那么我猜您可以通过将路径设置为环境变量来完成任务。以下是您需要做的事情:

  1. 创建一个变量,在logback.xml文件中说“LOGDIR”
  2.   

    <property name="LOGDIR" value="${app.workdir}/log" />

    1. 在FILE APPENDER中,将文件路径添加为:
    2.   

      <File>${LOGDIR}/${FILE_NAME}-${bySecond}.log</File>

      此处,您的文件将在$ LOGDIR目录下创建。现在的问题是如何设置“LOGDIR”值。

      在您的JAVA应用程序中,将app.workdir设置为系统变量i,e

        

      System.setProperty(“app.workdir”,“YOUR_TARGET_PATH”)

      如果你感到困惑,请告诉我。

答案 2 :(得分:0)

如果您使用mac,请使用绝对路径 $ {} catalina.base {/userLog.%d YYYY-MM-DD} .LOG 在tomcat下

它不会使用相对路径,例如../userLog.%d{yyyy-MM-dd}.log 所以我认为使用一些变量总是好的