2401_82596335 2025-10-05 15:31 采纳率: 0%
浏览 4

Windows Nifi 1.28.1

Windows Nifi 1.28.1
logback.xml里面是这样写的,还是不能按照限制文件的大小、按照时间生成nifi-app.log,现在的nifi-app.log文件超过100MB了,用文本查看器看的时候很卡。我之前怀疑过是不是logback.xml是不是没有被正确加载,我修改了其中nifi-app.log的生成路径,重启nifi后发现,确实在新的路径下生产了nifi-app.log,但该文件依然是无限增大的



```xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<configuration scan="true" scanPeriod="30 seconds">
    <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook" />
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>

    <appender name="APP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>D:/Nifi/logs/nifi-app.log</file>
    
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>D:/Nifi/logs/nifi-app.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory> 
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        
        <immediateFlush>true</immediateFlush>
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
        </encoder>
    </appender>
    

    <appender name="USER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--
              For daily rollover, use 'user_%d.log'.
              For hourly rollover, use 'user_%d{yyyy-MM-dd_HH}.log'.
              To GZIP rolled files, replace '.log' with '.log.gz'.
              To ZIP rolled files, replace '.log' with '.log.zip'.
            -->
            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user_%d.log</fileNamePattern>
            <!-- keep 30 log files worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="REQUEST_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-request.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-request_%d.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--
              For daily rollover, use 'bootstrap_%d.log'.
              For hourly rollover, use 'bootstrap_%d{yyyy-MM-dd_HH}.log'.
              To GZIP rolled files, replace '.log' with '.log.gz'.
              To ZIP rolled files, replace '.log' with '.log.zip'.
            -->
            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log</fileNamePattern>
            <!-- keep 5 log files worth of history -->
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="DEPRECATION_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-deprecation.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-deprecation_%d.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>10</maxHistory>
            <totalSizeCap>100MB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date %level [%thread] %logger %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="DEDICATED_LOGGING" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator class="org.apache.nifi.logging.NifiDiscriminator"/>
        <sift>
            <appender name="APP-${logFileSuffix}_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app-${logFileSuffix}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <!--
                    For daily rollover, use 'app_%d.log'.
                    For hourly rollover, use 'app_%d{yyyy-MM-dd_HH}.log'.
                    To GZIP rolled files, replace '.log' with '.log.gz'.
                    To ZIP rolled files, replace '.log' with '.log.zip'.
                    -->
                    <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app-${logFileSuffix}_%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
                    <maxFileSize>100MB</maxFileSize>
                    <!-- keep 30 log files worth of history -->
                    <maxHistory>30</maxHistory>
                </rollingPolicy>
                <immediateFlush>true</immediateFlush>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
                </encoder>
            </appender>
        </sift>
    </appender>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
        </encoder>
    </appender>

    <!-- valid logging levels: TRACE, DEBUG, INFO, WARN, ERROR -->

    <!-- Deprecation Log -->
    <logger name="deprecation" level="WARN" additivity="false">
        <appender-ref ref="DEPRECATION_FILE"/>
    </logger>

    <logger name="org.apache.nifi" level="INFO"/>
    <logger name="org.apache.nifi.processors" level="WARN"/>
    <logger name="org.apache.nifi.processors.standard.LogAttribute" level="INFO"/>
    <logger name="org.apache.nifi.processors.standard.LogMessage" level="INFO"/>
    <logger name="org.apache.nifi.controller.repository.StandardProcessSession" level="WARN" />
    <logger name="org.apache.parquet.hadoop.InternalParquetRecordReader" level="WARN" />

    <logger name="org.apache.zookeeper.ClientCnxn" level="ERROR" />
    <logger name="org.apache.zookeeper.server.NIOServerCnxn" level="ERROR" />
    <logger name="org.apache.zookeeper.server.NIOServerCnxnFactory" level="ERROR" />
    <logger name="org.apache.zookeeper.server.NettyServerCnxnFactory" level="ERROR" />
    <logger name="org.apache.zookeeper.server.quorum" level="ERROR" />
    <logger name="org.apache.zookeeper.ZooKeeper" level="ERROR" />
    <logger name="org.apache.zookeeper.server.PrepRequestProcessor" level="ERROR" />
    <logger name="org.apache.nifi.controller.reporting.LogComponentStatuses" level="ERROR" />

    <logger name="org.apache.calcite.runtime.CalciteException" level="OFF" />

    <logger name="org.apache.curator.framework.recipes.leader.LeaderSelector" level="OFF" />
    <logger name="org.apache.curator.ConnectionState" level="OFF" />

    <!-- Logger for managing logging statements for nifi clusters. -->
    <logger name="org.apache.nifi.cluster" level="INFO"/>

    <!-- Logger for logging HTTP requests received by the web server. -->
    <logger name="org.apache.nifi.server.JettyServer" level="INFO"/>

    <!-- Logger for managing logging statements for jetty -->
    <logger name="org.eclipse.jetty" level="INFO"/>

    <!-- Suppress non-error messages due to excessive logging by class or library -->
    <logger name="org.springframework" level="ERROR"/>
    <logger name="org.springframework.security" level="INFO"/>

    <!-- Suppress non-error messages due to known warning about redundant path annotation (NIFI-574) -->
    <logger name="org.glassfish.jersey.internal.Errors" level="ERROR"/>

    <!-- Suppress non-error messages due to Jetty AnnotationParser emitting a large amount of WARNS. Issue described in NIFI-5479. -->
    <logger name="org.eclipse.jetty.annotations.AnnotationParser" level="ERROR"/>

    <!-- Suppress non-error messages from SSHJ which was emitting large amounts of INFO logs by default -->
    <logger name="net.schmizz.sshj" level="WARN" />
    <logger name="com.hierynomus.sshj" level="WARN" />

    <!-- Suppress non-error messages from SMBJ which was emitting large amounts of INFO logs by default -->
    <logger name="com.hierynomus.smbj" level="WARN" />

    <!-- Suppress non-error messages from AWS KCL which was emitting large amounts of INFO logs by default -->
    <logger name="com.amazonaws.services.kinesis" level="WARN" />

    <!-- Suppress non-error messages from Apache Atlas which was emitting large amounts of INFO logs by default -->
    <logger name="org.apache.atlas" level="WARN"/>

    <!-- Suppress non-error messages from JetBrains Xodus FileDataWriter related to FileChannel -->
    <logger name="jetbrains.exodus.io.FileDataWriter" level="WARN" />

    <!-- These log messages would normally go to the USER_FILE log, but they belong in the APP_FILE -->
    <logger name="org.apache.nifi.web.security.requests" level="INFO" additivity="false">
        <appender-ref ref="APP_FILE"/>
    </logger>

    <!--
        Logger for capturing user events. We do not want to propagate these
        log events to the root logger. These messages are only sent to the
        user-log appender.
    -->
    <logger name="org.apache.nifi.web.security" level="INFO" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>
    <logger name="org.apache.nifi.web.api.config" level="INFO" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>
    <logger name="org.apache.nifi.authorization" level="INFO" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>
    <logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>
    <logger name="org.apache.nifi.web.api.AccessResource" level="INFO" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>
    <logger name="org.opensaml" level="WARN" additivity="false">
        <appender-ref ref="USER_FILE"/>
    </logger>

    <!-- Web Server Request Log -->
    <logger name="org.apache.nifi.web.server.RequestLog" level="INFO" additivity="false">
        <appender-ref ref="REQUEST_FILE"/>
    </logger>

    <!--
        Logger for capturing Bootstrap logs and NiFi's standard error and standard out.
    -->
    <logger name="org.apache.nifi.bootstrap" level="INFO" additivity="false">
        <appender-ref ref="BOOTSTRAP_FILE" />
    </logger>
    <logger name="org.apache.nifi.bootstrap.Command" level="INFO" additivity="false">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="BOOTSTRAP_FILE" />
    </logger>

    <!-- Everything written to NiFi's Standard Out will be logged with the logger org.apache.nifi.StdOut at INFO level -->
    <logger name="org.apache.nifi.StdOut" level="INFO" additivity="false">
        <appender-ref ref="BOOTSTRAP_FILE" />
    </logger>

    <!-- Everything written to NiFi's Standard Error will be logged with the logger org.apache.nifi.StdErr at ERROR level -->
    <logger name="org.apache.nifi.StdErr" level="ERROR" additivity="false">
        <appender-ref ref="BOOTSTRAP_FILE" />
    </logger>


    <logger name="org.apache.nifi.processors.standard.PutDatabaseRecord" level="DEBUG" additivity="false">
        <appender-ref ref="APP_FILE"/>
    </logger>
    <logger name="org.apache.nifi.processors.standard.PutSQL" level="DEBUG" additivity="false">
        <appender-ref ref="APP_FILE"/>
    </logger>
    <logger name="org.apache.nifi.controller.repository.StandardProcessSession" level="DEBUG" additivity="false">
        <appender-ref ref="APP_FILE"/>
    </logger>
    <logger name="org.apache.commons.dbcp2" level="DEBUG" additivity="false">
        <appender-ref ref="APP_FILE"/>
    </logger>



    <root level="INFO">
        <appender-ref ref="APP_FILE" />
    </root>

    

</configuration>


```

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-10-05 15:31
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题理解

    您使用的是 Windows Nifi 1.28.1,配置了 logback.xml,但是仍然无法按照限制文件大小和时间生成 nifi-app.log 文件。当前 nifi-app.log 文件已经超过 100MB。

    解决方案

    您可以尝试以下几种方法:

    1. 配置 RollingFileAppender

    在 logback.xml 中添加以下配置:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>nifi-app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>nifi-app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    1. 配置 TimeBasedRollingPolicy

    在 logback.xml 中添加以下配置:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>nifi-app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>nifi-app-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    1. 配置 SizeAndTimeBasedRollingPolicy

    在 logback.xml 中添加以下配置:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>nifi-app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>nifi-app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    

    以上配置可以根据文件大小和时间自动切割日志文件。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月5日