2013-06-03 54 views
2

我想記錄到根據模塊的不同附加目的地diffrerent追加程序...的Grails的log4j根據文件

我有3個附加目的地:控制檯,滾動文件,記錄控制器和服務,而另一個滾動文件記錄一些工作中的東西。我只想爲其滾動文件記錄作業的代碼,並且僅使用其他滾動文件記錄控制器和服務。

所以這是我的Grails log4j的配置:

development { 
    def catalinaBase = System.properties.getProperty('catalina.base') 
    if (!catalinaBase) catalinaBase = '.' 
    def logDirectory = "${catalinaBase}/logs/AmbienticWebsite" 


    log4j = { 

     appenders { 
      console name:'stdout', layout:pattern(conversionPattern: '%c{2} [%p] - %m%n') 
      appender new DailyRollingFileAppender(
        name: "rollingFileGrailsApp", 
        file: "${logDirectory}/GrailsApp.log", 
        datePattern: "'.'yyyy-MM-dd", 
        layout: pattern(conversionPattern: commonPattern) 
      ) 
      appender new DailyRollingFileAppender(
       name: "rollingFileImport", 
       file: "${logDirectory}/Imports.log", 
       datePattern: "'.'yyyy-MM-dd", 
       layout: pattern(conversionPattern: commonPattern) 
      ) 
     } 

     root { 
      error 'stdout', 'rollingFileImport', 'rollingFileGrailsApp' // both stdout and AmbienticWebsite_dev.log are filled by logging information 
      additivity = false 
     } 

      debug rollingFileImport: 'ambienticwebsite.EventImportJob', 
            'time2marketing.time2marketingImportService', 
            'eventImportData.DiscomImportDataService', 
            'eventImportData.EventImportService' 

      info rollingFileGrailsApp: 'ambienticwebsite', 
       'ambienticwebsite.jobManagement.AmbienticJobListener', 
       'BootStrap', 
       'grails.app.controllers', 
       'grails.app.services'  
    } 
} 

利用這種結構,將記錄寫入到兩個滾動文件和標準輸出。如果我從根中刪除滾動appender,滾動文件保持爲空,即使爲該組文件指定了appender。

有沒有人有建議將日誌分成appender?

回答

1

我認爲你需要將additivity: false添加到自定義的appender。

debug rollingFileImport: [foo, bar, baz] 
     additivity: false 

info rollingFileGrailsApp: [foo1, bar1, baz1] 
    additivity: false 

請參閱grails中的Logger Inheritance

+0

非常感謝您的回覆,如果我將可加性設置爲false,則即使未在根記錄器中指定appender,appender也能正常工作,現在它可以工作:) –