enregistreur racine est configuré pour être un enregistreur synchrone à INFO
niveau. J'ai aussi quelques enregistreurs Async. L'un des enregistreurs asynchrones est configuré à un niveau de journal supérieur personnalisé TOAST
(789). C'est plus élevé que le niveau TRACE
(600).problème de niveau de journal personnalisé dans log4j2
La raison pour ce faire est d'avoir un niveau de journal qui peut être utilisé pour des événements spéciaux pour être enregistrés via enregistreur Async et leurs propres appenders.
Nous ne voulons pas que les événements TOAST
soient dirigés vers les enregistreurs racines synchrones ou d'autres enregistreurs .. mais seulement vers le logger Async TOAST
et ses appenders correspondants .. est-ce possible?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="120" packages=“com.pack.toast”>
<CustomLevels>
<CustomLevel name=“TOAST” intLevel=“789” />
</CustomLevels>
<Appenders>
<RollingFile fileName="${sys:catalina.base}/logs/packiu.log"
append="true" name="DRFILE"
filePattern="${sys:catalina.base}/logs/packiu-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<Pattern>%d [%t] %c %M - %p: %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<RollingFile name="RollingFile" fileName="/Users/toasty/logs/roll_file_app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" immediateFlush="true" >
<PatternLayout>
<pattern>%m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
<Rewrite name="Rewrite" ignoreExceptions = "true" >
<ToastAppenderPolicy toastNeeded="true">
</ToastAppenderPolicy>
<AppenderRef ref="RollingFile"/>
</Rewrite>
</Appenders>
<Loggers>
<Logger name="net.rubyeye" level="off" />
<Logger name="com.google.code" level="off" />
<AsyncLogger name="com.pack.toast.ToastLoggerImpl" level=“TOAST” includeLocation="true">
<AppenderRef ref="Rewrite" />
</AsyncLogger>
<Root level="info">
<AppenderRef ref="DRFILE" />
</Root>
</Loggers>
</Configuration>
Merci pour l'info @ D.B. J'ai fait le logger nommé exactement comme indiqué mais le message de journal se termine toujours dans la sortie de l'enregistreur, malheureusement .. (racine synchrone et également avec le logger nommé asynchrone). Voici un exemple de la sortie qui va à l'enregistreur SYNC - '2017-04-03 23: 04: 42,534 [http-nio-8443-exec-1] TOAST_LOGGER journal - INFO: blah'. Des pensées? Je vais bien sans un niveau de journal personnalisé, si cette approche pouvait être faite pour fonctionner. Merci – user46743
Je crois que c'est probablement dû à l'additivité. Reportez-vous à la section [additivité] (https://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity) de la documentation log4j2 et définissez l'additivité sur false sur le ou les loggers appropriés. Je pense que le paramétrer sur false sur le toast logger devrait suffire car il dit: «Une fois qu'un événement atteint un logger avec son additivité défini sur false, l'événement ne sera pas transmis à ses enregistreurs parents, quel que soit leur paramètre d'additivité " –
Merci @ D.B. l'additivité semble avoir résolu le problème des valeurs transmises au parent. – user46743