2017-07-25 8 views
0

J'ai configuré la fraction de journalisation et essayé d'ajouter un gestionnaire supplémentaire pour stocker des journaux spécifiques dans des fichiers différents, en utilisant une catégorie, en regardant la réponse dans How to log application auditing to separate file on Wildfly 8 mais en s'adaptant à l'API Fluide Wildfly-Swarm.Comment configurer le journal d'audit d'application sur un fichier séparé dans Wildfly-swarm

Le code ressemble à ceci:

LoggingFraction loggingFraction = new LoggingFraction() 
      .consoleHandler(level, "COLOR_PATTERN") 
      .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n") 
      .periodicSizeRotatingFileHandler("FILE", h ->{ 
       h.level(level) 
         .namedFormatter("PATTERN") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
       Map<String,String> fileSpec = new HashMap<>(); 
       fileSpec.put("path", getLogsDirectory() + "/" + "application.log"); 
       h.file(fileSpec); 
      }) 
      .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{ 
       h.level(level) 
         .namedFormatter("AUDIT") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
         Map<String,String> fileSpec = new HashMap<>(); 
         fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log"); 
         h.file(fileSpec); 
      }) 
      .rootLogger(l -> { 
       l.level(level) 
         .handler("CONSOLE") 
         .handler("FILE") 
         ; 
      }) 
      .logger("FILE_AUDIT", l -> { 
       l.level(level) 
       .category("com.company.app.webservice") 
       .level(Level.INFO) 
       .handler("FILE_AUDIT_HANDLER") 
       ; 
      }) 
      ; 

Ensuite, je créé un enregistreur normal dans le code pour ajouter un journal, comme ceci:

private static final Logger LOGGER_AUDIT = LoggerFactory.getLogger("com.company.app.webservice"); 
... 
LOGGER_AUDIT.info("Testing audit log") 

Mais il ne fonctionne pas.
Je suppose que le nom de la catégorie doit seulement correspondre au nom de l'enregistreur, d'une manière que le nom de l'enregistreur 'commence par' le nom de la catégorie, alors il sera inclus. Ai-je raison?
Je ne sais pas s'il y a quelque chose qui ne va pas dans ma configuration ou si le Logger n'est pas censé être utilisé comme ça.

Répondre

1

L'attribut category est un bit d'un attribut hérité. Le nom de l'enregistreur est vraiment la catégorie si cela a du sens. Dans votre exemple ci-dessus, l'enregistreur s'appellera FILE_AUDIT, ce qui signifie qu'il correspondrait à Logger.getLogger("FILE_AUDIT").

Quelque chose comme ce qui suit est probablement ce que vous voulez.

LoggingFraction loggingFraction = new LoggingFraction() 
      .consoleHandler(level, "COLOR_PATTERN") 
      .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n") 
      .periodicSizeRotatingFileHandler("FILE", h ->{ 
       h.level(level) 
         .namedFormatter("PATTERN") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
       Map<String,String> fileSpec = new HashMap<>(); 
       fileSpec.put("path", getLogsDirectory() + "/" + "application.log"); 
       h.file(fileSpec); 
      }) 
      .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{ 
       h.level(level) 
         .namedFormatter("AUDIT") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
         Map<String,String> fileSpec = new HashMap<>(); 
         fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log"); 
         h.file(fileSpec); 
      }) 
      .rootLogger(l -> { 
       l.level(level) 
         .handler("CONSOLE") 
         .handler("FILE") 
         ; 
      }) 
      .logger("com.company.app.webservice", l -> { 
       l.level(level) 
       .level(Level.INFO) 
       .handler("FILE_AUDIT_HANDLER") 
       ; 
      }) 
      ; 

Notez le seul changement réel élimination de la catégorie (il est un attribut de lecture seule) et changer le nom FILE_AUDIT à com.company.app.webservice.

+0

Cela a fonctionné! Merci. – xsilmarx