日志日志位置



我正在将slf4j与java一起用于日志,我知道如何保存到特定位置,但是我希望日志将在jar运行文件夹下创建。

如何将其设置在logback.xml中?我试图未定义DEV_HOME值或使用./,但没有在JAR位置下创建日志。这是我当前的配置:

<property name="DEV_HOME" value="user.home" />
<appender name="FILE-AUDIT"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${DEV_HOME}/debug.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>
<logger name="com.FAM" level="debug"
        additivity="false">
    <appender-ref ref="FILE-AUDIT" />
</logger>
<root level="error">
    <appender-ref ref="FILE-AUDIT" />
</root>

写作

<property name="DEV_HOME" value="user.home" />

将dev_home的值设置为字符串" user.home"。您可能想要的是

<property name="DEV_HOME" value="${user.home}" />

请注意 $ {} 上方。

也简化了基于大小和时间的语法。但是,您使用的带有sizeandtimebasedfnatp的旧语法仍然有效。

要找到给定JAR文件所在的文件夹的路径,这是可以让您前进的示例代码。请注意,假定C类可用并位于您要寻找的JAR文件之一中。

String cClassAsResource = C.class.getName().replace('.', '/')+".class";
System.out.println(cClassAsResource);
URL pathToClassAsURL = C.class.getClassLoader().getResource(cClassAsResource);
// Assume that pathToClassAsURL.toString() begins with "jar:file:/"
String prefix = "jar:file:/";
String jarPathPlusTrailingClass = pathToClassAsURL.toString().substring(prefix.length());
System.out.println(jarPathPlusTrailingClass);
int indexOfExclamationMark = jarPathPlusTrailingClass.indexOf('!');
String jarPath = jarPathPlusTrailingClass.substring(0, indexOfExclamationMark);
System.out.println(jarPath);

对于需要自定义计算的变量,logBack允许您即时定义它们。

最新更新