将日志输出发送到 grails 1.3.2 中的不同文件

发布于 2024-09-28 17:39:53 字数 2330 浏览 0 评论 0原文

我想在特定的附加程序中记录我的包或类的日志输出。 但所有内容都会打印到根记录器。

这是我的配置:

log4j = {
    appenders {
        console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
        file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG
        file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG
    }

    error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
           'org.codehaus.groovy.grails.web.pages', //  GSP
           'org.codehaus.groovy.grails.web.sitemesh', //  layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping', // URL mapping
           'org.codehaus.groovy.grails.commons', // core / classloading
           'org.codehaus.groovy.grails.plugins', // plugins
           'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate'

    warn   'org.mortbay.log'

    debug  'grails.app'

    debug  mylog: 'my.package', additivity: true

    root {
      error 'grailslog'
      additivity = true
    }
}

我也尝试了这种语法:

log4j = {
    appender.stdout = "org.apache.log4j.ConsoleAppender"
    appender.'stdout.layout'="org.apache.log4j.PatternLayout"
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'

    appender.mylog= "org.apache.log4j.DailyRollingFileAppender"
    appender.'mylog.File' = "mylog.log"
    appender.'mylog.layout' = "org.apache.log4j.PatternLayout"
    appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    appender.grailslog = "org.apache.log4j.DailyRollingFileAppender"
    appender.'grailslog.File' = "grails.log"
    appender.'grailslog.layout' = "org.apache.log4j.PatternLayout"
    appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    rootLogger="error,stdout,grailslog"

    logger {
      grails="info,stdout,grailslog"
      my.package="debug,mylog"
    }
}

但这对于当前的 grails 版本不再适用。


简短的更新:

Grails 有一个新的 log-DSL(域特定语言)文档。 因此上面的代码有一个错误的语法。

他们写道:

...记录器的名称是“grails.app.(type).(className)”...

I want to have log output of my packages or classes in a specific appender.
But everything is printed out to the root-logger.

Here is my config:

log4j = {
    appenders {
        console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
        file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG
        file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG
    }

    error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
           'org.codehaus.groovy.grails.web.pages', //  GSP
           'org.codehaus.groovy.grails.web.sitemesh', //  layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping', // URL mapping
           'org.codehaus.groovy.grails.commons', // core / classloading
           'org.codehaus.groovy.grails.plugins', // plugins
           'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate'

    warn   'org.mortbay.log'

    debug  'grails.app'

    debug  mylog: 'my.package', additivity: true

    root {
      error 'grailslog'
      additivity = true
    }
}

I also tried this syntax:

log4j = {
    appender.stdout = "org.apache.log4j.ConsoleAppender"
    appender.'stdout.layout'="org.apache.log4j.PatternLayout"
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'

    appender.mylog= "org.apache.log4j.DailyRollingFileAppender"
    appender.'mylog.File' = "mylog.log"
    appender.'mylog.layout' = "org.apache.log4j.PatternLayout"
    appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    appender.grailslog = "org.apache.log4j.DailyRollingFileAppender"
    appender.'grailslog.File' = "grails.log"
    appender.'grailslog.layout' = "org.apache.log4j.PatternLayout"
    appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    rootLogger="error,stdout,grailslog"

    logger {
      grails="info,stdout,grailslog"
      my.package="debug,mylog"
    }
}

But this doesn't work any more with the current grails version.


A short update:

Grails has a new Documentation for the log-DSL (domain specific language).
Therefore the code above has a wrong syntax.

They wrote:

... the name of the logger is 'grails.app.(type).(className)' ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅浅 2024-10-05 17:39:53

我设法使用我的其他日志文件。

我没有使用带有包名称的记录器,而是使用了自定义名称并用它初始化了我的记录器。

debug  mylog: 'myLog', additivity: true

[...]

def log = Logger.getLogger("myLog")

I managed to use my other log file.

Instead of using a logger with the package name I used a custom name and initialized my logger with this.

debug  mylog: 'myLog', additivity: true

[...]

def log = Logger.getLogger("myLog")
梦言归人 2024-10-05 17:39:53

我已经添加了每个环境日志记录,因此我的生产日志将保存到文件/电子邮件和文件中。开发人员转到标准输出

environments {
  development {
    debug 'grails.app', 'stdout'
    //trace 'org.hibernate.type'

  }
  production {
    appenders {
      file name: "file", file: "/var/log/myapp.log"
      appender new SMTPAppender(name: 'smtp', to: mail.error.to, from: mail.error.from,
          subject: mail.error.subject, threshold: Level.ERROR,
          SMTPHost: mail.error.server, SMTPUsername: mail.error.username,
          SMTPDebug: mail.error.debug.toString(), SMTPPassword: mail.error.password,
          layout: pattern(conversionPattern:
          '%d{[ dd.MM.yyyy HH:mm:ss.SSS]} [%t] %n%-5p %n%c %n%C %n %x %n %m%n'))
    }

    root {
      error 'stdout', 'smtp','file'
      additivity = true
    }
  }
}

I've added per environment logging so my production logs go to a file/email & dev go to stdout

environments {
  development {
    debug 'grails.app', 'stdout'
    //trace 'org.hibernate.type'

  }
  production {
    appenders {
      file name: "file", file: "/var/log/myapp.log"
      appender new SMTPAppender(name: 'smtp', to: mail.error.to, from: mail.error.from,
          subject: mail.error.subject, threshold: Level.ERROR,
          SMTPHost: mail.error.server, SMTPUsername: mail.error.username,
          SMTPDebug: mail.error.debug.toString(), SMTPPassword: mail.error.password,
          layout: pattern(conversionPattern:
          '%d{[ dd.MM.yyyy HH:mm:ss.SSS]} [%t] %n%-5p %n%c %n%C %n %x %n %m%n'))
    }

    root {
      error 'stdout', 'smtp','file'
      additivity = true
    }
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文