log4j logger设置默认优先级

时间:2017-02-17 12:52:10

标签: java log4j

我有一个独立的java应用程序,其中包含以下config log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="maxFileSize" value="1MB" />
        <param name="maxBackupIndex" value="1" />
        <param name="File"
            value=".\\myComp.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd.MM.yy HH\:mm\:ss.SSS} %5p %c{1}:%L - %m%n " />
        </layout>
    </appender>

    <category name="com.mycomp.project.starter">
        <priority value="${project.client.log.level.starter}" />
    </category>
    <category name="com.security">
        <priority value="${project.client.log.level.security}" />
    </category>

    <root>
        <level value="ERROR" />
        <appender-ref ref="file" />
    </root>

</log4j:configuration>

当我启动应用程序时,我可以通过可以包含的ini文件设置日志级别:

-Dproject.client.log.level.starter=INFO
-Dproject.client.log.level.security=DEBUG

我想归档的是,如果-Dproject.client.log.level.security=DEBUG未设置,则应使用ERROR。

我如何存档?我提供任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,我得到了一个解决方案,不幸的是它涉及切换到log4j2。

我发现log4j允许Property Substitution允许使用前缀为#import <CoreTelephony/CTCall.h> #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCarrier.h> #import <CoreTelephony/CTTelephonyNetworkInfo.h> @interface MMCallNotificationManager() @property (nonatomic, strong) CTCallCenter *callCenter; @property (nonatomic) BOOL callWasStarted; @end @implementation MMCallNotificationManager - (instancetype)init { self = [super init]; if (self) { self.callCenter = [[CTCallCenter alloc] init]; self.callWasStarted = NO; __weak __typeof__(self) weakSelf = self; [self.callCenter setCallEventHandler:^(CTCall *call) { if ([[call callState] isEqual:CTCallStateIncoming] || [[call callState] isEqual:CTCallStateDialing]) { if (weakSelf.callWasStarted == NO) { weakSelf.callWasStarted = YES; NSLog(@"Call was started."); } } else if ([[call callState] isEqual:CTCallStateDisconnected]) { if (weakSelf.callWasStarted == YES) { weakSelf.callWasStarted = NO; NSLog(@"Call was ended."); } } }]; } return self; } @end 的系统属性。结合this finding(我可以使用简单的sys:设置默认值),我将配置更改为:

-

现在我可以在ini文件中设置它,或者在不需要时将其保留,并且仍然具有已定义的日志级别。