J'ai besoin de consigner des messages dans différents fichiers journaux qui doivent être créés lors de l'exécution en fonction du paramètre de travail que je transmets lors du lancement du travail. par exemple batch_id = 2014-07-01 etcjournal de lot de printemps à différent fichier journal en fonction de l'ID de lot?
Je suis tombé sur https://github.com/dsyer/log4j-utils et avec l'aide du cas de test, https://github.com/dsyer/log4j-utils/blob/master/src/test/resources/file-dispatcher.xml essayé de configurer dans mon projet d'administration par lots de printemps. Ci-dessous la configuration
<appender name="LOGGER" class="org.springframework.util.log4j.DispatcherAppender">
<param name="propertyName" value="file" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="/var/log/st/batch.log.%x" />
</layout>
<appender-ref ref="FILE" />
</appender>
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="file" value="/var/log/st/default.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p: %m%n" />
</layout>
</appender>
<root>
<priority value="info" />
<appender-ref ref="LOGGER" />
</root
et dans ma classe, je me sers
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
public class MyClass implements MyInterface {
Logger logger = Logger.getLogger(MyClass.class);
public void run(final String command, final long timeout) throws Exception {
NDC.push("2014-07-01");
logger.info("Running " + command);
}
}
J'utilise cette classe pour exécuter des commandes par itemWriter de lot de printemps en traitement par lots de printemps.
Cela ne fonctionne pas, aucun fichier journal n'est créé et si nous créons manuellement et donnons des autorisations complètes, rien n'est enregistré dans les fichiers journaux.