logback:不创建日志文件

问题描述 投票:0回答:8

首先,我尝试了所有存在的解决方案,但没有任何效果,所以我不想让任何人说这个问题是重复的。

我无法使用 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>

我什至试图给所有用户在文件夹中写入的权限,但这不起作用

drwxrwxrwx。 2 没有人没有人 4096 4 月 29 日 08:24 日志

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

java logging logback
8个回答
11
投票

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

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 文件夹中创建日志文件

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


4
投票

添加这部分

<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>

代替

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>

写你的项目包名而不是

com.my.package

希望它能解决您的问题。


更新:

发送日志到文件

所有日志记录将被重定向到一个文件

c:/logs/debug.log
。此外,此日志文件将每天存档或文件大小大于 10MB。

logback.xml

<?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>

资源链接:

  1. logback.xml 示例

1
投票

我也遇到了同样的问题。就我而言,我将 eclipse 与 tomcat 一起使用。

If(绝对路径) 那么就没有问题了,日志文件会在指定的路径中创建。

else if(相对路径&&在eclipse中工作) 那么你的日志文件是在相对于 eclipse 安装目录的路径中创建的。

else if(相对路径&&部署在tomcat中) 然后在相对于 tomcat

bin 文件夹的路径中创建日志文件

1
投票

当我遇到这个问题时,我不得不将logback.log文件所在的文件夹添加为源文件夹。 在 Eclipse 中,只需右键单击文件夹 -> 构建路径 -> 用作源文件夹。


1
投票

创建一个存储库并将其作为源文件夹包含在内,并将 logback.xml 文件放入其中。 要将存储库包含到源文件夹中,请单击存储库->构建路径->用作源文件夹


0
投票

就我而言,实际上是我在忽略 xml 属性文件的 pom.xml 中添加了一些内容。添加后

<include>**/*.xml</include>  

在那里,它起作用了

<resource>
    <directory>src/main/resources/</directory>
    <includes>
      <include>**/*.json</include>          
      <include>**/*.properties</include>
    </includes>
  </resource>
</resources>

0
投票

我缺少依赖项 ch.qos.logback logback-classic


0
投票

在我的例子中,文件不是为新的附加程序创建的,因为 under 标签的值/模式不是唯一的。然后没有创建新附加程序的日志文件。

© www.soinside.com 2019 - 2024. All rights reserved.