我最近开始使用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文件。任何指针都将受到赞赏。
答案 0 :(得分:2)
我怀疑你会找到一个标准机制来写入应用程序类路径上的文件。类路径上的东西通常是只读的。
类似地,您将找不到在构建环境中某些位置明确支持日志的机制(例如“目标”目录)。应用程序通常不在构建环境中运行。
所以最实用的解决方案可能是有两个独立的日志配置文件;即一个用于您的开发平台,另一个用于您的部署平台。在不同的日志记录配置文件中使用不同的日志文件路径名。
如果相对路径名target/logs/clientLog.log
不起作用,那么当您的应用程序(例如tomcat服务器)启动时,某些东西可能正在改变“当前目录”。但是(AFAIK)这对Tomcat来说是正常的。
答案 1 :(得分:2)
如果我理解了您的问题,那么我猜您可以通过将路径设置为环境变量来完成任务。以下是您需要做的事情:
<property name="LOGDIR" value="${app.workdir}/log" />
<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 所以我认为使用一些变量总是好的