log4j2如何记录软件包?

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

我需要支持才能将特定的程序包登录到chats.log,将错误登录到error.log。如何做到这一点正确?到目前为止,我在几个附加程序中创建了阈值过滤器,但是error.log保持为空,chats.log具有一个条目,该条目不属于特定的程序包。毕竟,我仔细阅读之后,还尝试了2天时间来解决此问题,log4j的文档,并遵循了网站和youtube上的一些教程。我也尝试过:Apache Log4j2 package specific logging using log4j2.xml我也尝试了旧的log4j教程,但这以错误结束。

这些是我在maven项目结构中使用的文件。src / main / resources / log4j2.properties

status = error
name = PropertiesConfig

######################################
# Global properties as varies
######################################
property.logPath = logs

######################################
# Filters and properties of filters
######################################
filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = all

######################################
# Appenders Section for roles
######################################
appenders = rolling, console, rolling2, errorAppender, service

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.immediateFlush= true
appender.rolling.append = true
appender.rolling.fileName = ${logPath}/server.log
appender.rolling.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
appender.rolling.filter.threshold.type = LevelRangeFilter
appender.rolling.filter.threshold.minLevel = INFO
appender.rolling.filter.threshold.maxLevel = INFO
appender.rolling.filter.threshold.onMatch = ACCEPT
appender.rolling.filter.threshold.onMismatch = DENY

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

appender.rolling2.type = RollingFile
appender.rolling2.name = debugLog
appender.rolling2.immediateFlush= true
appender.rolling2.append = true
appender.rolling2.fileName = ${logPath}/debug.log
appender.rolling2.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling2.layout.type = PatternLayout
appender.rolling2.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling2.policies.type = Policies
appender.rolling2.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling2.policies.time.interval = 1
appender.rolling2.policies.time.modulate = true
appender.rolling2.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling2.policies.size.size=10MB
appender.rolling2.strategy.type = DefaultRolloverStrategy
appender.rolling2.strategy.max = 20
appender.rolling2.filter.threshold.type = LevelRangeFilter
appender.rolling2.filter.threshold.minLevel = DEBUG
appender.rolling2.filter.threshold.maxLevel = DEBUG
appender.rolling2.filter.threshold.onMatch = ACCEPT
appender.rolling2.filter.threshold.onMismatch = DENY

appender.errorAppender.type = RollingFile
appender.errorAppender.name = errorLog
appender.errorAppender.immediateFlush= true
appender.errorAppender.append = true
appender.errorAppender.fileName = ${logPath}/error.log
appender.errorAppender.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.errorAppender.layout.type = PatternLayout
appender.errorAppender.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.errorAppender.policies.type = Policies
appender.errorAppender.policies.time.type = TimeBasedTriggeringPolicy
appender.errorAppender.policies.time.interval = 1
appender.errorAppender.policies.time.modulate = true
appender.errorAppender.policies.size.type = SizeBasedTriggeringPolicy
appender.errorAppender.policies.size.size=10MB
appender.errorAppender.strategy.type = DefaultRolloverStrategy
appender.errorAppender.strategy.max = 20
appender.errorAppender.filter.threshold.type = LevelRangeFilter
appender.errorAppender.filter.threshold.minLevel = ERROR
appender.errorAppender.filter.threshold.maxLevel = ERROR
appender.errorAppender.filter.threshold.onMatch = ACCEPT
appender.errorAppender.filter.threshold.onMismatch = DENY

appender.service.type = RollingFile
appender.service.name = chats
appender.service.append = true
appender.service.fileName = ${logPath}/chats.log
appender.service.filePattern = chats-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.service.layout.type = PatternLayout
appender.service.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.service.policies.type = Policies
appender.service.policies.time.type = TimeBasedTriggeringPolicy
appender.service.policies.time.interval = 1
appender.service.policies.time.modulate = true
appender.service.policies.size.type = SizeBasedTriggeringPolicy
appender.service.policies.size.size=10MB
appender.service.strategy.type = DefaultRolloverStrategy
appender.service.strategy.max = 20
appender.service.filter.threshold.type = LevelRangeFilter
appender.service.filter.threshold.minLevel = INFO
appender.service.filter.threshold.maxLevel = INFO
appender.service.filter.threshold.onMatch = ACCEPT
appender.service.filter.threshold.onMismatch = DENY

######################################
# Loggers Section for file write
######################################
loggers = rolling, package

logger.rolling.name = org.remad.logging
logger.rolling.appenderRefs = rolling, debugLog, errorLog
logger.rolling.level = all
logger.rolling.additivity = true
logger.rolling.appenderRef.rolling.ref = RollingFile
logger.rolling.appenderRef.rolling2.ref = debugLog

logger.package.name = org.remad.logging.protocol.Protocol
logger.package.appenderRefs = service
logger.package.level = info
logger.package.additivity = false
logger.package.appenderRef.service.ref = chats

######################################
# RootLogger Section for settings
######################################
rootLogger.level = all
rootLogger.appenderRefs = stdout, chats, errorLog
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.service.ref = chats
rootLogger.apenderRef.errorAppender.ref = errorLog

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.remad</groupId>
    <artifactId>Logging</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- ====================================================================== -->
    <!-- Global project properties                                              -->
    <!-- ====================================================================== -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!-- ====================================================================== -->
    <!-- project Dependencies                                                   -->
    <!-- ====================================================================== -->
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.2</version>
        </dependency>
    </dependencies>

    <!-- ====================================================================== -->
    <!-- project build with plugins                                             -->
    <!-- ====================================================================== -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>10</source>
                    <target>10</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.2</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>org.remad.logging.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

src / main / org.remad.logging.Main.java

package org.remad.logging;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.remad.logging.protocol.Protocol;

public class Main {

    private static final Logger logger = LogManager.getLogger(Main.class);

    public static void main(String[] args) {
        String message = "Hello there!";
        LoggerEntryPoint loggerEntryPoint = new LoggerEntryPoint();
        Protocol protocol = new Protocol();
        logger.trace(message);
        logger.debug(message);
        logger.info(message);
        logger.warn(message);
        logger.error(message);
        logger.fatal(message);
        loggerEntryPoint.entries();
        protocol.logSomeMessages();
    }
}

org.remad.logging.LoggerEntryPoint.java

package org.remad.logging;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LoggerEntryPoint {

    private static final Logger logger = LogManager.getLogger(LoggerEntryPoint.class);

    public LoggerEntryPoint() {}

    public void entries() {
        logger.info("now in " + getClass().getCanonicalName());
        logger.error("now error.");
        logger.debug("hggxdfghcdft");
    }
}

org.remad.logging.protocol.Protocol.java

package org.remad.logging.protocol;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Protocol {

    public Protocol() {}

    private static final Logger logger = LogManager.getLogger(Protocol.class);

    public void logSomeMessages() {
        logger.fatal("Fatal error.");
        logger.error("Error happened.");
        logger.warn("Warning message.");
        logger.info("This message informs.");
        logger.debug("Debug message.");
        logger.info("This is also chat message");
    }
}

logs / server.log

2020-05-18 17:24:42 INFO  Main:17 - Hello there!
2020-05-18 17:24:42 INFO  LoggerEntryPoint:13 - now in org.remad.logging.LoggerEntryPoint

logs / error.log


logs / debug.log

2020-05-18 17:24:42 DEBUG Main:16 - Hello there!
2020-05-18 17:24:42 DEBUG LoggerEntryPoint:15 - hggxdfghcdft

logs / chats.log

2020-05-18 17:24:42 INFO  Main:17 - Hello there!
2020-05-18 17:24:42 INFO  LoggerEntryPoint:13 - now in org.remad.logging.LoggerEntryPoint
2020-05-18 17:24:42 INFO  Protocol:16 - This message informs.
2020-05-18 17:24:42 INFO  Protocol:18 - This is also chat message
java logging log4j2
2个回答
0
投票

您有一个全局阈值过滤器,其级别设置为ALL。这意味着无论记录器上设置的日志记录级别如何,每个日志事件都将被发送到附加程序。您还将“根”日志记录级别设置为“全部”。这是非常糟糕的做法,因为它会导致性能问题,因为每个日志记录调用都会创建一个LogEvent,并且由于您要捕获行号,因此每个事件都需要通过遍历线程的堆栈跟踪来捕获位置信息。

摆脱全局阈值过滤器。您不需要这种情况。将“根”日志记录级别设置为DEBUG,然后将附加程序引用的日志记录级别设置为与您要记录的内容匹配。

我已经将您的配置修改为我认为可以的配置,但是我没有尝试过。我更喜欢XML语法,因此如果输入错误,也不要感到惊讶。

status = error
name = PropertiesConfig

######################################
# Global properties as varies
######################################
property.logPath = logs


######################################
# Appenders Section for roles
######################################
appenders = rolling, console, rolling2, errorAppender, service

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.immediateFlush= true
appender.rolling.append = true
appender.rolling.fileName = ${logPath}/server.log
appender.rolling.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
appender.rolling.filter.threshold.type = LevelRangeFilter
appender.rolling.filter.threshold.minLevel = INFO
appender.rolling.filter.threshold.maxLevel = INFO
appender.rolling.filter.threshold.onMatch = ACCEPT
appender.rolling.filter.threshold.onMismatch = DENY

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

appender.rolling2.type = RollingFile
appender.rolling2.name = debugLog
appender.rolling2.immediateFlush= true
appender.rolling2.append = true
appender.rolling2.fileName = ${logPath}/debug.log
appender.rolling2.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling2.layout.type = PatternLayout
appender.rolling2.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling2.policies.type = Policies
appender.rolling2.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling2.policies.time.interval = 1
appender.rolling2.policies.time.modulate = true
appender.rolling2.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling2.policies.size.size=10MB
appender.rolling2.strategy.type = DefaultRolloverStrategy
appender.rolling2.strategy.max = 20
appender.rolling2.filter.threshold.type = LevelRangeFilter
appender.rolling2.filter.threshold.minLevel = DEBUG
appender.rolling2.filter.threshold.maxLevel = DEBUG
appender.rolling2.filter.threshold.onMatch = ACCEPT
appender.rolling2.filter.threshold.onMismatch = DENY

appender.errorAppender.type = RollingFile
appender.errorAppender.name = errorLog
appender.errorAppender.immediateFlush= true
appender.errorAppender.append = true
appender.errorAppender.fileName = ${logPath}/error.log
appender.errorAppender.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.errorAppender.layout.type = PatternLayout
appender.errorAppender.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.errorAppender.policies.type = Policies
appender.errorAppender.policies.time.type = TimeBasedTriggeringPolicy
appender.errorAppender.policies.time.interval = 1
appender.errorAppender.policies.time.modulate = true
appender.errorAppender.policies.size.type = SizeBasedTriggeringPolicy
appender.errorAppender.policies.size.size=10MB
appender.errorAppender.strategy.type = DefaultRolloverStrategy
appender.errorAppender.strategy.max = 20
appender.errorAppender.filter.threshold.type = LevelRangeFilter
appender.errorAppender.filter.threshold.minLevel = ERROR
appender.errorAppender.filter.threshold.maxLevel = ERROR
appender.errorAppender.filter.threshold.onMatch = ACCEPT
appender.errorAppender.filter.threshold.onMismatch = DENY

appender.service.type = RollingFile
appender.service.name = chats
appender.service.append = true
appender.service.fileName = ${logPath}/chats.log
appender.service.filePattern = chats-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.service.layout.type = PatternLayout
appender.service.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.service.policies.type = Policies
appender.service.policies.time.type = TimeBasedTriggeringPolicy
appender.service.policies.time.interval = 1
appender.service.policies.time.modulate = true
appender.service.policies.size.type = SizeBasedTriggeringPolicy
appender.service.policies.size.size=10MB
appender.service.strategy.type = DefaultRolloverStrategy
appender.service.strategy.max = 20
appender.service.filter.threshold.type = LevelRangeFilter
appender.service.filter.threshold.minLevel = INFO
appender.service.filter.threshold.maxLevel = INFO
appender.service.filter.threshold.onMatch = ACCEPT
appender.service.filter.threshold.onMismatch = DENY

######################################
# Loggers Section for file write
######################################
loggers = rolling, package

logger.rolling.name = org.remad.logging
logger.rolling.appenderRefs = rolling, rolling2
logger.rolling.level = DEBUG
logger.rolling.additivity = true
logger.rolling.appenderRef.rolling.ref = RollingFile
logger.rolling.appenderRef.rolling.level = INFO
logger.rolling.appenderRef.rolling2.ref = debugLog
logger.rolling.appenderRef.rolling2.ref = DEBUG

logger.package.name = org.remad.logging.protocol.Protocol
logger.package.appenderRefs = service
logger.package.level = info
logger.package.additivity = false
logger.package.appenderRef.service.ref = chats
logger.package.appenderRef.service.level = INFO

######################################
# RootLogger Section for settings
######################################
rootLogger.level = INFO
rootLogger.appenderRefs = stdout, chats, errorLog
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.stdout.level = INFO
rootLogger.appenderRef.service.ref = chats
rootLogger.appenderRef.service.level = INFO
rootLogger.apenderRef.errorAppender.ref = errorLog
rootLogger.appenderRef.errorAppender.ref = ERROR

我将过滤器留在附加器上,仅过滤所需的水平。我不确定为什么您只希望在特定Appender上使用INFO或ERROR消息,而不是该级别的默认值和更具体的设置,但我将其保留了。如果您确实不需要,请删除那些过滤器。


0
投票

这有效。

status = error
name = PropertiesConfig

######################################
# Global properties as varies
######################################
property.logPath = logs

######################################
# Appenders Section for log-files
######################################
appenders = rolling, console, rolling2, errorAppender, service

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.immediateFlush= true
appender.rolling.append = true
appender.rolling.fileName = ${logPath}/server.log
appender.rolling.filePattern = server-log-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
appender.rolling.filter.threshold.type = LevelRangeFilter
appender.rolling.filter.threshold.minLevel = info
appender.rolling.filter.threshold.maxLevel = info
appender.rolling.filter.threshold.onMatch = ACCEPT
appender.rolling.filter.threshold.onMismatch = DENY

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

appender.rolling2.type = RollingFile
appender.rolling2.name = debugLog
appender.rolling2.immediateFlush= true
appender.rolling2.append = true
appender.rolling2.fileName = ${logPath}/debug.log
appender.rolling2.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling2.layout.type = PatternLayout
appender.rolling2.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling2.policies.type = Policies
appender.rolling2.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling2.policies.time.interval = 1
appender.rolling2.policies.time.modulate = true
appender.rolling2.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling2.policies.size.size=10MB
appender.rolling2.strategy.type = DefaultRolloverStrategy
appender.rolling2.strategy.max = 20
appender.rolling2.filter.threshold.type = LevelRangeFilter
appender.rolling2.filter.threshold.minLevel = DEBUG
appender.rolling2.filter.threshold.maxLevel = DEBUG
appender.rolling2.filter.threshold.onMatch = ACCEPT
appender.rolling2.filter.threshold.onMismatch = DENY

appender.errorAppender.type = RollingFile
appender.errorAppender.name = errorLog
appender.errorAppender.immediateFlush= true
appender.errorAppender.append = true
appender.errorAppender.fileName = ${logPath}/error.log
appender.errorAppender.filePattern = error-log-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.errorAppender.layout.type = PatternLayout
appender.errorAppender.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.errorAppender.policies.type = Policies
appender.errorAppender.policies.time.type = TimeBasedTriggeringPolicy
appender.errorAppender.policies.time.interval = 1
appender.errorAppender.policies.time.modulate = true
appender.errorAppender.policies.size.type = SizeBasedTriggeringPolicy
appender.errorAppender.policies.size.size=10MB
appender.errorAppender.strategy.type = DefaultRolloverStrategy
appender.errorAppender.strategy.max = 20
appender.errorAppender.filter.threshold.type = ThresholdFilter
appender.errorAppender.filter.threshold.level = warn

appender.service.type = RollingFile
appender.service.name = chats
appender.service.append = true
appender.service.fileName = ${logPath}/chats.log
appender.service.filePattern = chats-log-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.service.layout.type = PatternLayout
appender.service.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.service.policies.type = Policies
appender.service.policies.time.type = TimeBasedTriggeringPolicy
appender.service.policies.time.interval = 1
appender.service.policies.time.modulate = true
appender.service.policies.size.type = SizeBasedTriggeringPolicy
appender.service.policies.size.size=10MB
appender.service.strategy.type = DefaultRolloverStrategy
appender.service.strategy.max = 20
appender.service.filter.threshold.type = LevelRangeFilter
appender.service.filter.threshold.minLevel = INFO
appender.service.filter.threshold.maxLevel = INFO
appender.service.filter.threshold.onMatch = ACCEPT
appender.service.filter.threshold.onMismatch = DENY

######################################
# Loggers for logging different packages
######################################
loggers = package

# RootLogger write all into logs, besides chats.log
rootLogger.level = debug
rootLogger.additivity = false
rootLogger.appenderRefs = stdout, rolling, rolling2, errorLog
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile
rootLogger.appenderRef.rolling.level = info
rootLogger.appenderRef.rolling2.ref = debugLog
rootLogger.appenderRef.rolling2.level = debug
rootLogger.appenderRef.errorAppender.ref = errorLog
rootLogger.appenderRef.errorAppender.level = warn

# Logs only chat messages of class: org.remad.logging.protocol.Protocol
logger.package.name = org.remad.logging.protocol.Protocol
logger.package.additivity = false
logger.package.level = info
logger.package.appenderRefs = service
logger.package.appenderRef.service.ref = chats
logger.package.appenderRef.service.level = info
© www.soinside.com 2019 - 2024. All rights reserved.