java logback:不创建日志文件

7qhs6swi  于 2023-03-16  发布在  Java
关注(0)|答案(8)|浏览(403)

首先,我尝试了所有存在的解决方案,但没有一个工作,所以我不想从任何人说这个问题是重复的。
我无法使用 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四月29日08:24日志
我再重复一遍,我尝试了所有存在的解决方案,但没有一个有效。

am46iovg

am46iovg1#

也许下面的链接会对你有所帮助。
https://dzone.com/articles/do-not-use-relative-path

EDIT:这个链接说“* 不要在回登录时使用相对路径 *"。但是我发现了一个测试它的机会。我发现了一些奇怪的输出。

我的测试平台是一个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 logs文件夹中创建日志文件<file>logs/output.log</file>------------------〉在tomcat bin\logs文件夹中创建日志文件
有时日志文件没有被创建,我认为,主要原因是缺少用户/应用程序的创建文件权限。

dojqjjoe

dojqjjoe2#

添加此部分

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

日志返回. 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 Example
kxkpmulp

kxkpmulp3#

我也面临着同样的问题。在我的例子中,我使用的是带有Tomcat的Eclipse。
如果为(绝对路径),则没有问题,将在指定的路径中创建日志文件。
else if(Relative path && working in eclipse)则在相对于eclipse安装目录的路径中创建日志文件。
else if(相对路径&& deployed in tomcat)则在tomcat的bin文件夹的相对路径内创建日志文件

2mbi3lxu

2mbi3lxu4#

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

ddarikpa

ddarikpa5#

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

zfycwa2u

zfycwa2u6#

在我的例子中,它实际上是我在pom.xml中添加的忽略xml属性文件的东西。

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

好了,成功了

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

iecba09b7#

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

h79rfbju

h79rfbju8#

在我的例子中,由于under标记的值/模式不是唯一的,所以没有为新的附加器创建该文件,也就没有为新的附加器创建日志文件。

相关问题