logback:不创建日志文件

h.z*_*zak 7 java logging logback

首先:我尝试了所有存在的解决方案,但没有任何工作,所以我不希望任何人说这个问题是重复的

我无法使用logback登录到该文件,但我可以毫无问题地登录到控制台,

我的logback.xml文件内容

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- 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>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
    <!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
    <!--for further documentation-->
    <append>true</append>
    <File>/root/connector/logs/connector.log</File>
    <encoder>
        <!-- was: %d{yyyy-MM-dd HH:mm:ss}%5p [%t] (%F:%L) - %msg%n -->
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- By setting the name to .gz here, we get free compression. -->
      <fileNamePattern>/root/connector/logs/connector.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
    </rollingPolicy>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我甚至尝试给所有用户写入文件夹的权限,但这不起作用

drwxrwxrwx.2没人没人4096年4月29日08:24日志

我再说一遍,我尝试了所有存在的解决方案,但没有任何工作

gbi*_*bii 9

也许以下链接会对您有所帮助。

https://dzone.com/articles/do-not-use-relative-path

编辑:此链接说“不要在 logback 中使用相对路径”。但是我找到了一个测试它的机会。我发现了一些奇怪的输出。

我的测试平台是一个 Web 应用程序,这个应用程序在 Windows 上的 Apache Tomcat 下运行。 配置和输出:


<file>/logs/output.log</file>--------------> 在 C:\logs 文件夹中<file>C:/logs/output.log</file>创建日志文件 ----------->在 C:\logs 文件夹中 创建日志文件 <file>../logs/output.log</file>----- ------> 在 tomcat 日志文件夹中 <file>logs/output.log</file>创建日志文件 ---------------> 在 tomcat bin\logs 文件夹中创建日志文件

有时没有创建日志文件,我认为,其主要原因是缺乏用户/应用程序的创建文件权限。


Sky*_*ker 6

添加这部分

<logger name="com.my.package" level="DEBUG" additivity="false">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</logger>

<!-- By default, the level of the root level is set to DEBUG -->
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
</root>
Run Code Online (Sandbox Code Playgroud)

代替

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>
Run Code Online (Sandbox Code Playgroud)

写你的项目包名称而不是com.my.package

希望它能解决您的问题。


更新:

将日志发送到文件

所有日志记录都将重定向到一个文件c:/logs/debug.log。此外,该日志文件将每天存档或文件大小大于10MB。

日志记录文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="DEV_HOME" value="c:/logs" />

    <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} - %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.mkyong.web" level="debug"
        additivity="false">
        <appender-ref ref="FILE-AUDIT" />
    </logger>

    <root level="error">
        <appender-ref ref="FILE-AUDIT" />
    </root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

资源链接:

  1. logback.xml 示例