2017-09-17 2 views
1

Je souhaite configurer le journal de retour TimeBasedRollingPolicy par programmation, mais il ne crée pas mon fichier journal dans le dossier routé. voici mon code qui appelle la classe créateur enregistreur:Enregistrement de TimeBasedRollingPolicy par programme

CreateLogger LoggerClass=new CreateLogger(); 
     private final Logger logger = loggerClass.createLoggerFor("foo", "D:\\logback/testLogback.log"); 
logger.debug("11111"); 

D: \ logback/testLogback.log est le fichier principal du journal. ici est classe LoggerCreator:

public class CreateLogger { 
    public Logger createLoggerFor(String string, String file) { 
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
     PatternLayoutEncoder ple = new PatternLayoutEncoder(); 
    ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n"); 
    ple.setContext(lc); 
    ple.start(); 
    FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>(); 
    fileAppender.setFile(file); 
    fileAppender.setEncoder(ple); 
    fileAppender.setContext(lc); 
    fileAppender.start(); 

    RollingFileAppender logFileAppender = new RollingFileAppender(); 
    logFileAppender.setContext(lc); 
    logFileAppender.setName("debug"); 
    logFileAppender.setEncoder(ple); 
    logFileAppender.setAppend(true); 
    logFileAppender.setFile(file); 
    TimeBasedRollingPolicy logFilePolicy = new TimeBasedRollingPolicy(); 
    logFilePolicy.setContext(lc); 
    logFilePolicy.setParent(logFileAppender); 
    logFilePolicy.setFileNamePattern("D:\\logback/archived/testLogBack.%d{yyyy-MM-dd}.%i.log"); 
    logFilePolicy.setMaxHistory(7); 
    logFilePolicy.start(); 

    logFileAppender.setRollingPolicy(logFilePolicy); 
    logFileAppender.start(); 
    Logger logger = (Logger) LoggerFactory.getLogger(string); 
    logger.addAppender(fileAppender); 
    logger.setLevel(Level.DEBUG); 
    logger.setAdditive(false); 


    logger.addAppender(logFileAppender); 

    return logger; 
} 

}

fichiers archivés doivent être dans cette voie en utilisant le nom de modèle mentionné: D:. \ Logback/Archives/testLogBack% d {aaaa-mm-jj}. % i.log »

mon problème est les journaux créés sont ajoutés au fichier journal principal et non base séparée à la date

Je peux aussi voir ces lignes dans la console:.

14:44:16,864 |-ERROR in [email protected]:83 - no applicable action for [rollingPolicy], current ElementPath is [[configuration][appender][rollingPolicy]] 
14:44:16,864 |-ERROR in [email protected]:30 - no applicable action for [fileNamePattern], current ElementPath is [[configuration][appender][rollingPolicy][fileNamePattern]] 

mon serveur d'application est weblogic 12c

+0

aucune réponse ?? !! : ((( – AFF

Répondre

1

Je l'ai résolu par moi-même comme ci-dessous:

PatternLayoutEncoder logEncoder = new PatternLayoutEncoder(); 
      logEncoder.setContext(logCtx); 
      logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"); 
      logEncoder.start(); 

      ConsoleAppender logConsoleAppender = new ConsoleAppender(); 
      logConsoleAppender.setContext(logCtx); 
      logConsoleAppender.setName("console"); 
      logConsoleAppender.setEncoder(logEncoder); 
      logConsoleAppender.start(); 

      logEncoder = new PatternLayoutEncoder(); 
      logEncoder.setContext(logCtx); 
      logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"); 
      logEncoder.start(); 

      RollingFileAppender logFileAppender = new RollingFileAppender(); 
      logFileAppender.setContext(logCtx); 
      logFileAppender.setName("logFile"); 
      logFileAppender.setEncoder(logEncoder); 
      logFileAppender.setAppend(true); 
      logFileAppender.setFile("logs/logfile.log"); 

      TimeBasedRollingPolicy logFilePolicy = new TimeBasedRollingPolicy(); 
      logFilePolicy.setContext(logCtx); 
      logFilePolicy.setParent(logFileAppender); 
      logFilePolicy.setFileNamePattern("logs/archived/logfile-%d{yyyy-MM-dd_HH}.log.zip"); 
      logFilePolicy.setMaxHistory(7); 
      logFilePolicy.start(); 

      logFileAppender.setRollingPolicy(logFilePolicy); 
      logFileAppender.start(); 

      Logger log = logCtx.getLogger("Main"); 
      log.setAdditive(false); 
      log.setLevel(Level.INFO); 
      log.addAppender(logConsoleAppender); 
      log.addAppender(logFileAppender); 

      return log; 

J'ai aussi epuration paquets préfèrent, et préfèrent-application des ressources dans weblogic-application.xml .

Espérons que cela aiderait les autres