2010-09-03 35 views
4

Je suis une mise logging.properties dans le WEB-INF/classes dir de tomcatjava util logging.properties: Comment se connecter à deux fichiers différents

Je voudrais vous connecter deux fichiers différents. Par exemple: org.pkg1 va dans un fichier et org.pkg2 va dans un fichier séparé.

Je peux obtenir un fichier configuré, mais pas deux. Est-ce possible?

+0

http://stackoverflow.com/questions/1787317/two-log4j-files-for-ear-with-two-modules tonsn plus, juste la recherche stackoverflow –

Répondre

9

J'ai finalement compris cela. Dans tomcat, ils étendent java util logging ("JULI") pour activer cette fonctionnalité. Voici un fichier logging.properties que je mets dans le répertoire WEB-INF qui a finalement accompli ce que je cherchais ......:

handlers=1console.java.util.logging.ConsoleHandler, 2jsp.org.apache.juli.FileHandler, 3financials.org.apache.juli.FileHandler 
.handlers=1a.java.util.logging.ConsoleHandler 

jsp.level=ALL 
jsp.handlers=2jsp.org.apache.juli.FileHandler 
org.apache.jasper.level = FINE 
org.apache.jasper.handlers=2jsp.org.apache.juli.FileHandler 
org.apache.jsp.level = FINE 
org.apache.jsp.handlers=2jsp.org.apache.juli.FileHandler 

com.paypal.level=ALL 
com.paypal.handlers=3financials.org.apache.juli.FileHandler 

3financials.org.apache.juli.FileHandler.level=ALL 
3financials.org.apache.juli.FileHandler.directory=${catalina.base}/logs 
3financials.org.apache.juli.FileHandler.prefix=financials. 

2jsp.org.apache.juli.FileHandler.level=ALL 
2jsp.org.apache.juli.FileHandler.directory=${catalina.base}/logs 
2jsp.org.apache.juli.FileHandler.prefix=jsp. 

1console.java.util.logging.ConsoleHandler.level=FINE 
1console.java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
1

Il n'existe pas de moyen facile d'obtenir deux gestionnaires du même type avec des classes java.util.logging ayant des arguments différents. Probablement la façon de le faire le plus simple est de créer une sous-classe FileHandler dans votre logging.properties qui passe les arguments appropriés pour permettre à votre exploitation forestière doit avoir lieu, par exemple:

org.pkg1.handlers=java.util.logging.FileHandler 
org.pkg2.handlers=org.pkg2.FileHandler 
java.util.logging.FileHandler.pattern="org_pkg1_%u.%g.log" 
org.pkg2.FileHandler.pattern="org_pkg2_%u.%g.log" 

org/PKG2/FileHandler.java:

package org.pkg2; 

import java.util.logging.*; 

public class FileHandler extends java.util.logging.FileHandler { 
    public FileHandler() { 
     super(LogManager.getLogManager().getProperty("org.pkg2.FileHandler.pattern")); 
    } 
} 
0

Il est possible en utilisant jdk pur aussi (essayez avec jdk 7 ou jdk 8).

Créez simplement un gestionnaire de fichiers personnalisé; utilisez cela similaire à "java.util.logging.FileHandler".

public class JULTestingFileHandler extends FileHandler { 

    public JULTestingFileHandler() throws IOException, SecurityException 
    { 
     super();  
    } 
} 

propriétés utilisateur fichier;

com.xxx.handlers = com.xxx.JULXXXFileHandler 

com.xxx.JULXXXFileHandler.pattern = ./logs/test1_test2.%u.%g.log 
4

Parlant de configuration logging.properties, je ne trouve aucun mécanisme à utiliser plus d'un appender. J'ai fait une solution de contournement simple qui fonctionne pour moi.

public class CustomAFileHandler extends FileHandler { 
    public DebugFileHandler() throws IOException, SecurityException { 
     super(); 
    } 
} 

public class CustomBFileHandler extends FileHandler { 
    public DebugFileHandler() throws IOException, SecurityException { 
     super(); 
    } 
} 

Et mes logging.properties

... 
handlers=<pkg_name>.CustomAFileHandler, <pkg_name>.CustomBFileHandler, java.util.logging.ConsoleHandler 

<pkg_name>.CustomAFileHandler.level=ALL 
<pkg_name>.CustomAFileHandler.pattern=%h/A%u.log 
<pkg_name>.CustomAFileHandler.limit=50000 
<pkg_name>.CustomAFileHandler.count=1 
<pkg_name>.CustomAFileHandler.formatter=java.util.logging.SimpleFormatter 


<pkg_name>.CustomBFileHandler.level=ALL 
<pkg_name>.CustomBFileHandler.pattern=%h/B%u.log 
<pkg_name>.CustomBFileHandler.limit=50000 
<pkg_name>.CustomBFileHandler.count=1 
<pkg_name>.CustomBFileHandler.formatter=java.util.logging.SimpleFormatter 
... 
0

le même problème moi-même avec java.util.logging et pas tout à fait satisfait des réponses données, je viens de trouver dans the documentation:

2,2 Modification de la Configuration

Voici un petit programme qui ajuste dynamiquement t Il consigne la configuration pour envoyer la sortie vers un fichier spécifique et pour obtenir beaucoup d'informations sur les wombats ( ). Le motif "% t" désigne le répertoire temporaire du système .

public static void main(String[] args) { 
     Handler fh = new FileHandler("%t/wombat.log"); 
     Logger.getLogger("").addHandler(fh); 
     Logger.getLogger("com.wombat").setLevel(Level.FINEST); 
     ... 
    } 

Ainsi, il semble que vous ne pouvez pas le faire juste à partir du fichier .properties que ne peut pas instancier plusieurs appenders, mais vous pouvez le faire par programme. En outre, il devrait être possible en utilisant la LoggerManager