2016-01-28 2 views
0

У нас есть веб-приложение, теперь мы хотим напечатать дату в файле журнала stdout, на самом деле мы печатаем вывод, используя System.out.println() во многих java-файлах. Итак, мы хотим, чтобы дата & раз в stdout/stderr logfiles, где мы получаем вывод (без изменения java-файлов). , пожалуйста, помогите мне.Нужно печатать дату в stdout logfile tomcat

+1

Добро пожаловать в переполнение стека! Я отредактировал заголовок вашего вопроса, чтобы включить имя функции, которую вы вызываете, чтобы увидеть больше людей со знанием предмета. Я также отступил ваш образец кода на 4 пробела, чтобы он отображался правильно - см. Справку по редактированию для получения дополнительной информации о форматировании. Измените конкретное сообщение об ошибке, с которым вы сталкиваетесь, в случае необходимости определить конкретную проблему. Удачи! – bozzmob

ответ

0

В начале программы вы можете переопределить 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); 
    } 
}) 

То же самое можно сделать с System.setErr()

Если позволяет использовать Java Instrumentation, то вы можете использовать Агент

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

Смежные вопросы