Java LOGBACK:将日志写入类路径中的文件
我最近刚开始使用Logback,正在浏览官方文档。在我的一个项目中实现它时,我想知道是否有办法将日志写入类路径上的文件或目标文件夹/logs/myapp.log中的某个位置?我在官方文档中找不到太多信息(是的,我读过变量替换) 这是我的logback.xml:Java LOGBACK:将日志写入类路径中的文件,java,maven,classpath,logback,Java,Maven,Classpath,Logback,我最近刚开始使用Logback,正在浏览官方文档。在我的一个项目中实现它时,我想知道是否有办法将日志写入类路径上的文件或目标文件夹/logs/myapp.log中的某个位置?我在官方文档中找不到太多信息(是的,我读过变量替换) 这是我的logback.xml: <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>clientLog.log</file>
<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>
clientLog.log
真的
%-4相对[%thread]-5级别%logger{35}-%msg%n
现在,我希望在目标文件夹(MAVEN项目)中创建clientLog.log文件。任何指针都将受到欢迎。我怀疑您是否会找到一种标准机制来写入应用程序类路径上的文件。类路径上的内容通常是只读的 类似地,在构建环境的某个位置(例如“目标”目录)也找不到明确支持日志的机制。应用程序通常不在生成环境中运行 因此,最实际的解决方案可能是有两个单独的日志配置文件;i、 e.一个用于开发平台,另一个用于部署平台。在不同的日志配置文件中使用不同的日志文件路径名
如果相对路径名
target/logs/clientLog.log
不起作用,则在应用程序(例如tomcat服务器)启动时,可能有什么东西正在更改“当前目录”。但是(好吧)这对Tomcat来说是正常的。如果我理解了你的问题,那么我想你可以通过将path设置为环境变量来完成任务。以下是您必须做的事情:
${LOGDIR}/${FILE_NAME}-${bySecond}.log
在这里,您的文件将在$LOGDIR目录下创建。现在的问题是如何设置“LOGDIR”值
在JAVA应用程序中,将app.workdir设置为系统变量,即
System.setProperty(“app.workdir”、“您的目标路径”)
如果您感到困惑,请告诉我。如果您使用mac,请使用以下绝对路径 ${catalina.base}/userLog.%d{yyyy-MM-dd}.log 雄猫之下 它不能使用相对路径,如../userLog.%d{yyyy-MM-dd}.log
因此,我认为使用一些变量总是好的您是否尝试过
target/logs/clientLog.log
project.build.directory
,即目标文件夹在运行时不可用。是的,我已经尝试过了。似乎不起作用。然而,有效的是{catalina.base}属性(我使用的是tomcat)。