我只是想从Grails打印日志目录中的最新日志文件的内容。 command.execute()。text返回为空。所以我一定做错了。我感谢任何帮助!谢谢!
def command = "cat \$(ls logs/localhost_access_log* | tail -1)"
println command.execute().text
答案 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
}