2017-04-26 5 views
0

Ich arbeite mit einer Java-Anwendung, die log4j integriert. Für eine neue Entwicklung würde ich das brauchen, anstatt eine Datei zu erzeugen, die ich zwei, eine pro Land erzeugen werde, das vom Anwendungsweb zugegriffen wird. Beide haben die gleichen Protokolldatensätze, die in meiner gesamten Anwendung gefunden werden.Log4j generieren verschiedene Dateien mit dem gleichen Inhalt

konfiguriert ich die Konfiguration eine XML-Datei mit:

<!-- Appenders --> 
 
    \t <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
 
    \t \t <layout class="org.apache.log4j.PatternLayout"> 
 
    \t \t \t <param name="ConversionPattern" 
 
    \t \t \t \t value="jeveris: %d{dd MMM yyyy HH:mm:ss,SSS} %-5p %c - %m%n" /> 
 
    \t \t </layout> 
 
    \t </appender> 
 

 
    \t 
 
    \t <appender name="One-Console" class="org.apache.log4j.RollingFileAppender"> 
 
    \t \t <param name="File" value="Console.log" /> 
 
    \t \t <param name="Append" value="true" /> 
 
    \t \t <param name="MaxFileSize" value="2MB" /> 
 
    \t \t <layout class="org.apache.log4j.PatternLayout"> 
 
    \t \t \t <param name="ConversionPattern" 
 
    \t \t \t \t value="%d{dd MMM yyyy HH:mm:ss,SSS} %-5p %c - %m%n" /> 
 
    \t \t </layout> 
 
    \t </appender> 
 

 

 
    \t 
 
    \t <category name="com.example.one.web"> 
 
    \t \t <level value="debug" /> 
 
    \t \t <appender-ref ref="One-Console" /> 
 
    \t </category> 
 
    \t 
 
    \t 
 
    \t <root> 
 
    \t  <appender-ref ref="console" /> 
 
    \t \t <level value="debug" /> 
 
    \t </root> 
 
    </log4j:configuration>

Könnte jemand mich leiten, sagen Sie mir, ob es möglich ist oder mir helfen, die Lösung zu finden?

Vielen Dank.

Antwort

0

Wenn Sie 2+ Logfiles mögen, die denselben Inhalt gedruckt wird, dann könnte man wie so zwei verschiedene Dateien in Ihrem Tag fein:

<configuration status="OFF"> 
<Properties> 
    <Property name="log-path">/your/file/path/</Property> 
    <Property name="log-country-name1">Country1</Property> 
    <Property name="log-country-name2">Country2</Property> 
    <!-- more if necessary --> 
    <Property name="log-pattern">%d{ISO8601} %-5p [%t|%c{1}] %m\n</Property> 
    <Property name="rollover-strategy-max">5</Property> 
    <Property name="rolling-size-based">10 MB</Property> 
</Properties> 
<appenders> 

    <!--uncomment following if want to print to console as well --> 
    <!-- <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout> 
      <pattern>${log-pattern}</pattern> 
     </PatternLayout> 
    </Console> --> 

<RollingFile name="INFO" fileName="${log-path}/${log-country-name1}-logger.log" filePattern="${log-path}/${log-project-name}-debug-%d-%i.log.zip"> 
    <PatternLayout> 
     <pattern>${log-pattern}</pattern> 
    </PatternLayout> 
    <Policies> 
     <SizeBasedTriggeringPolicy size="${rolling-size-based}" /> 
    </Policies> 
    <DefaultRolloverStrategy max="${rollover-strategy-max}" /> 
</RollingFile> 

<RollingFile name="INFO" fileName="${log-path}/UpdaterLocal-logger.log" filePattern="${log-path}/${log-country-name2}-debug-%d-%i.log.zip"> 
    <PatternLayout> 
     <pattern>${log-pattern}</pattern> 
    </PatternLayout> 
    <Policies> 
     <SizeBasedTriggeringPolicy size="${rolling-size-based}" /> 
    </Policies> 
    <DefaultRolloverStrategy max="${rollover-strategy-max}" /> 
</RollingFile> 

</appenders> 
<Loggers> 
    <logger name="io.switchfour" level="trace" additivity="false"> 
     <AppenderRef ref="INFO" level="info" /> 
    </logger> 
</Loggers> 

Die obigen erstellt/Ihre/Datei /path/Country1-logger.log und /your/file/path/Country2-logger.log und schreibt alle Einträge, die INFO oder höher sind, in beide Dateien. Ihre Protokolldatei sollte identisch sein.

+0

Erster Dank für die Antwort. Ich denke, du erklärst mir falsch. Was ich sagen wollte ist, dass ich Sie in einer Datei oder einem anderen schreiben muss, abhängig vom Land, obwohl die Nachrichten und das Paket die gleichen sind. Das heißt, wir stellen uns eine Nachricht von log "Anwendung starten" vor, wenn der Benutzer Spanien auswählt, wird es in der Datei country1.log geschrieben, wenn es England auswählt, würde es in country2.log schreiben. –

+0

Wollen Sie so etwas machen (siehe Abschnitt Eigenschaftsaustausch)? http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution – jeffkempf

+0

Ja, vielen Dank für die Informationen. Das habe ich gebraucht –

Verwandte Themen