在Grails

时间:2017-11-14 13:44:36

标签: grails

让我改写整个帖子。

我有一个使用Grails编写的Web应用程序,并在运行Linux的VM上运行。

Web应用程序需要维护一个单独且不同的日志文件,其中包含应用程序用户非常重要的信息。我只希望它包含我写给它的信息。没有其他所以我不能使用Tomcat日志记录等。我需要一个单独的日志文件,因为应用程序的用户不够精明,无法读取Tomcat日志。

如果我在本地C:驱动器上使用日志文件,它当然可以通过IntelliJ在调试中运行它,但是一旦我将它加起来并将其放入Tomcat中,它不再有效,我得到一个ClassNotFoundException。

 String myCurrentDate = new Date().format( 'yyyyMMddhhmm' )
 def newFile = "C:\\Temp\\MyLogFile-Log-" + myCurrentDate + ".txt.old"
 def file = new File('C:\\Temp\\MyLogFile-Log.txt')
 file.renameTo( new File(newFile) )
 file.delete()

最好的方法是什么?在Linux机器上托管日志文件? sftp似乎也不是答案。我需要能够:

  • 应用程序执行时,重命名旧的日志文件以将其存档,然后删除旧的日志文件
  • 写入日志文件

如果我在Linux上这样做,我该如何指定文件位置?

1 个答案:

答案 0 :(得分:1)

Grails的最新版本提供了logback支持。通常您会在logback.groovy下找到grails-app/conf

功能齐全的文件示例:

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy


appender( 'FILE', RollingFileAppender ){
  file = '/var/log/MyLogFile-Log.log'
  append = true
  encoder( PatternLayoutEncoder ){ pattern = '%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n' }
  rollingPolicy( TimeBasedRollingPolicy ){
    fileNamePattern = '/var/log/MyLogFile-Log-%d{yyyy-MM-dd}.log'
    maxHistory = 30
  }
}

logger 'com.your.important.package', INFO

root INFO, 'FILE'

此处使用RollingFileAppender,每天创建备份文件。