3

我正在尝试配置 cuba 框架以便将日志写入文件,但目前我不能。

我在java文件中有:

private static final Logger LOG = LoggerFactory.getLogger(BlisterauftragServiceImpl.class);
LOG.info("This is a, info log");

在 build.gradle 文件中,我有:

logbackConfigurationFile = 'etc/war-logback.xml'

然后在文件夹等中,我有文件war-logback.xml

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

<configuration debug="false" packagingData="true">

    <property name="logDir" value="${app.home}/logs"/>

    <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/app.log</file>

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${logDir}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread%X{cubaApp}%X{cubaUser}] %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>

        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root>
        <appender-ref ref="Console"/>
        <appender-ref ref="File"/>
    </root>

    <!-- Begin CUBA -->

    <logger name="com.haulmont.cuba" level="DEBUG"/>

    <logger name="com.haulmont.cuba.core.sys" level="INFO"/>

    <logger name="com.haulmont.cuba.core.sys.CubaDefaultListableBeanFactory" level="WARN"/>

    <logger name="com.haulmont.cuba.core.app.scheduling" level="INFO"/>

    <logger name="com.haulmont.cuba.web.sys" level="INFO"/>

    <logger name="com.haulmont.cuba.portal" level="INFO"/>

    <logger name="com.haulmont.restapi.sys" level="INFO"/>

    <logger name="com.haulmont.cuba.core.app.LockManager" level="INFO"/>

    <!-- End CUBA -->

    <logger name="eclipselink" level="WARN"/>

    <logger name="eclipselink.sql" level="INFO"/>

    <logger name="org.springframework" level="WARN"/>

    <logger name="org.activiti" level="INFO"/>

    <logger name="freemarker" level="INFO"/>

    <logger name="org.thymeleaf.TemplateEngine" level="INFO"/>

    <logger name="org.docx4j" level="WARN"/>

    <logger name="org.xlsx4j" level="WARN"/>

    <logger name="org.hibernate" level="WARN"/>

    <logger name="sun" level="INFO"/>

    <logger name="com.sun" level="INFO"/>

    <logger name="javax" level="INFO"/>

    <logger name="org.apache" level="INFO"/>

    <logger name="org.atmosphere" level="INFO"/>

    <logger name="org.docx4j.utils.ResourceUtils" level="ERROR"/>

    <logger name="org.docx4j.Docx4jProperties" level="ERROR"/>

    <logger name="org.xlsx4j.jaxb.Context" level="ERROR"/>

    <!-- Begin Perf4J  -->

    <appender name="PerfStatFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/perfstat.log</file>
        <append>true</append>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/perfstat.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>

        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="CoalescingStatistics" class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
        <param name="TimeSlice" value="60000"/>
        <appender-ref ref="PerfStatFile"/>
    </appender>

    <appender name="UIPerfStatFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/perfstat-ui.log</file>
        <append>true</append>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/perfstat-ui.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>

        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="UICoalescingStatistics" class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
        <param name="TimeSlice" value="120000"/>
        <appender-ref ref="UIPerfStatFile"/>
    </appender>

    <logger name="org.perf4j.TimingLogger" additivity="false" level="INFO">
        <appender-ref ref="CoalescingStatistics"/>
    </logger>

    <logger name="com.haulmont.cuba.gui.logging.UIPerformanceLogger" additivity="false" level="INFO">
        <appender-ref ref="UICoalescingStatistics"/>
    </logger>

    <!-- End Perf4J  -->

</configuration>

如果我更改此文件中的任何内容,它不会执行任何操作。例如我试图改变:

<file>${logDir}/app.log</file>

至:

<file>${logDir}/app1.log</file>

然后在文件夹 deploy/tomcat/conf 中,我找到一个文件 logback.xml。在文件夹 deploy/tomcat/logs 中,我会找到我所有的日志。我可以更改 conf 文件,这将正常工作。但是我的文件war-logback没有被考虑在内。

然后我的问题是每次新建时都会创建一个部署文件夹。然后每次重新生成代码时,我都必须重写 le logback.xml 文件。

任何想法为什么会这样?

谢谢最好的问候

4

2 回答 2

0

logback 尝试按照以下步骤查找配置:

  1. Logback 尝试在类路径中查找名为 logback-test.xml 的文件。
  2. 如果没有找到这样的文件,logback 会尝试在类路径中找到一个名为 logback.groovy 的文件。
  3. 如果没有找到这样的文件,它会在类路径中检查文件 logback.xml。
  4. 如果没有找到这样的文件,则使用服务提供者加载工具(在 JDK 1.6 中引入)通过查找文件 META-INF\services\ch 来解析 com.qos.logback.classic.spi.Configurator 接口的实现。类路径中的 qos.logback.classic.spi.Configurator。其内容应指定所需配置器实现的完全限定类名。
  5. 如果以上都没有成功,logback 会使用 BasicConfigurator 自动配置自己,这将导致日志输出被定向到控制台。

你会在这里找到它

所以,让我们确保你的战争中的配置文件被命名为“logback-test.xml”、“logback.groovy”或“logback.xml”,也许这就是“war-logback.xml”被忽略的原因。

于 2018-07-02T07:31:49.973 回答
0

如果您需要永久覆盖开发日志记录配置,请创建一个文件<project_name>/etc/logback.xml并将您的配置放入其中。运行deploy任务后,文件将被复制到<project_folder>/deploy/app_home/logback.xml.

于 2021-07-30T13:01:50.053 回答