如何从grails应用程序访问日志目录中的文件?

时间:2016-09-12 10:13:59

标签: grails jobs

我只是想从Grails打印日志目录中的最新日志文件的内容。 command.execute()。text返回为空。所以我一定做错了。我感谢任何帮助!谢谢!

def command = "cat \$(ls logs/localhost_access_log* | tail -1)"     

println command.execute().text

2 个答案:

答案 0 :(得分:0)

ServletContextHolder.servletContext.getRealPath('/')会有所帮助,尽管这就是正在运行的应用程序。你可能需要做

在尝试获取日志之前对路径进行一些验证(未经测试)

path=ServletContextHolder.servletContext.getRealPath('/')
println "--- path is ${path}"
command = "cd $path && cat \$(ls ../logs/localhost_access_log* | tail -1)"

答案 1 :(得分:0)

而不是制作复杂的cmdline字符串,为什么不用groovy / java工具编写它呢?

// find real directory of logs folder
def dir = new File(ServletContextHolder.servletContext.getRealPath('logs'))
// inside logs folder look for newest file beginning with "localhost_access"
def file = dir.listFiles({ name -> name.startsWith('localhost_access') } as FilenameFilter).max({ it.lastModified() })
def content = null
if (file) {
    // read content directly
    def content = file.text
    // or via a process
    def content = new ProcessBuilder('cat', file.absolutePath).start().text
}