在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上这样做,我该如何指定文件位置?

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

功能齐全的文件示例:

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,每天创建备份文件。

最新更新