2016-01-28 50 views
0

的日誌文件的stdout日我們有一個Web應用程序,現在我們要在stdout日誌文件打印日期,實際上我們是在印刷如此多的java文件使用System.out.println()輸出。所以,我們要在那裏我們得到的輸出(帶出來改變Java文件)的日期&時間stdout/stderr日誌文件。 請幫助我。需要打印在Tomcat中

+1

歡迎堆棧溢出!我編輯了你的問題的標題,以包含你所調用的函數的名稱,以便更多具有該主題知識的人將會看到它。我還將代碼示例縮進了4個空格,以便它能夠正確渲染 - 請參閱編輯幫助以獲取有關格式化的更多信息。如果需要識別特定問題,請編輯您遇到的特定錯誤消息。祝你好運! – bozzmob

回答

0

在開始PROGRAMM的可以覆蓋println()爲您System.out並添加new Date()

System.setOut(new PrintStream(System.out) { 
    @Override 
    public void println(String s) { 
     Date date = new Date(); 
     super.println(String.format("[%s] %s"), date, s); 
    } 
}) 

如果允許使用的Java規範那麼你可以使用你可以用System.setErr()

做同樣的代理

package com.test.agent; 

import java.io.PrintStream; 
import java.lang.instrument.Instrumentation; 
import java.util.Date; 

public class AgentOutRewrite { 

    public static void premain(String agentArgument, Instrumentation instrumentation) { 
     System.out.println("Agent VM replacement"); 

     System.setOut(new PrintStream(System.out) { 
      @Override 
      public void println(String str) { 
       super.println(new Date() + ": " + str); 
      } 
     }); 
    } 
} 

隨着MANIFEST.MF

Manifest-Version: 1.0 
Premain-Class: com.test.agent.AgentOutRewrite 

如果您創建了這個類例如agent.jar中 罐子你可以注入你代理到你的程序一樣,

java -javaagent:Agent.jar YourProgram.jar

對於添加代理到Tomcat你應該改變CATALINA_OPTS

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/YourAgentJar.jar"

就像在這個崗位 Adding -javaagent to Tomcat 6 server, where do I put it and in what format?

+0

我們沒有更改java文件的權限。 –

+0

@SanthoshBhupathi我已經添加了另一種方法,而無需更改原始代碼。 – desilijic