Как я могу использовать log4j с многократным использованием приложений с динамическим c filename? - PullRequest
0 голосов
/ 06 мая 2020

Я хочу использовать log4j-Appender несколько раз, но с разными именами файлов:

Appender:

<RollingFile name="MODULE" fileName="log/module-${ModuleName}.log" append="true" filePattern="log/module-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>

Регистраторы:

<Logger name="MOD1" level="debug">
    <Properties>
        <Property name="ModuleName">MOD1</Property>
    </Properties>
    <appender-ref ref="MODULE"/>
</Logger>
<Logger name="MOD2" level="error">
    <Properties>
        <Property name="ModuleName">MOD2</Property>
    </Properties>
    <appender-ref ref="MODULE"/>
</Logger>

Но это не не работает. Как я могу передать переменную из регистратора в приложение? Наконец, мне нужны 2 файла

/log/module-MOD1.log <- Debug messages from MOD1
/log/module-MOD2.log <- Error messages from MOD2

Спасибо за любую помощь

1 Ответ

0 голосов
/ 06 мая 2020

Просто добавьте еще Appender и соедините Logger и Appender каждую пару.

Например:

...
<RollingFile name="MODULE1" fileName="./log/module1-${ModuleName}.log" append="true" filePattern="./log/module1-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>

<RollingFile name="MODULE2" fileName="./log/module2-${ModuleName}.log" append="true" filePattern="./log/module2-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>
...

...
<Logger name="com.foo.bar.ClassName1" level="debug">
    <Properties>
        <Property name="ModuleName">MOD1</Property>
    </Properties>
    <appender-ref ref="MODULE1"/>
</Logger>
<Logger name="com.foo.bar.ClassName2" level="error">
    <Properties>
        <Property name="ModuleName">MOD2</Property>
    </Properties>
    <appender-ref ref="MODULE2"/>
</Logger>
...

Был такой же вопрос, поэтому я ответил и там. поэтому, пожалуйста, посетите здесь .

...