首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logback日志定位

Logback日志定位
EN

Stack Overflow用户
提问于 2018-02-20 07:22:11
回答 1查看 2K关注 0票数 0

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

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

代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

发布于 2018-02-21 07:18:09

写作

代码语言:javascript
复制
<property name="DEV_HOME" value="user.home" />

将DEV_HOME的值设置为字符串"user.home“。你可能想要的

代码语言:javascript
复制
<property name="DEV_HOME" value="${user.home}" />

注意上面的${}

此外,基于大小和时间的语法是简化。但是,使用SizeAndTimeBasedFNATP的旧语法仍然有效。

要找到一个给定jar文件所在的文件夹的路径,下面是示例代码。请注意,C类假定是可用的,并且位于您要查找的jar文件中。

代码语言:javascript
复制
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允许您进行在空中定义它们

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48879806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档