У нас есть веб-приложение, теперь мы хотим напечатать дату в файле журнала stdout
, на самом деле мы печатаем вывод, используя System.out.println()
во многих java-файлах. Итак, мы хотим, чтобы дата & раз в stdout
/stderr
logfiles, где мы получаем вывод (без изменения java-файлов). , пожалуйста, помогите мне.Нужно печатать дату в stdout logfile tomcat
ответ
В начале программы вы можете переопределить 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?
У нас нет разрешения на изменение java-файлов. –
@SanthoshBhupathi Я добавил еще один подход без изменения исходного кода. – desilijic
- 1. Использование stdout для настройки Logfile
- 2. tomcat logging stdout stderr
- 3. Как печатать \ 0 в stdout в swift
- 4. Добавить дату в качестве префикса для stderr & stdout
- 5. Как печатать буфер в stdout внутри C++?
- 6. Hypnotoad Logfile
- 7. Perl script - печатать STDOUT из оболочки ssh в файл
- 8. Необязательно печатать на stdout во время выполнения
- 9. Daemon все еще может печатать на stdout?
- 10. Mpirun: Как печатать STDOUT только одного процесса?
- 11. Как довольно печатать для переменной вместо STDOUT?
- 12. Как печатать информацию на уровне stdout?
- 13. Tomcat STDOUT as Ошибка в Eclipse
- 14. Как записать вывод stdout в Tomcat?
- 15. Logfile создание
- 16. Java DateUtils печатать неправильную дату
- 17. Как печатать журналы в приложении сервлета tomcat
- 18. Python: печатать массив строк в stdout по строкам
- 19. Нужно печатать массив другим способом
- 20. Android JSONObject нужно печатать пустые
- 21. Bash, как печатать дату с другой локалью
- 22. C# snapshot logfile
- 23. Нужно запустить tomcat вручную
- 24. Tomcat redirect 'stderr' content to 'stdout'
- 25. Остановить запись tomcat на stdout и stderror
- 26. Нужно запустить tomcat автоматически
- 27. Подавление предупреждений на Apache Tomcat stdout
- 28. Как печатать на stdout во время сохранения stdout в строку одновременно в golang?
- 29. Как написать в logfile с quercus
- 30. Нужно поставить дату в кавычки
Добро пожаловать в переполнение стека! Я отредактировал заголовок вашего вопроса, чтобы включить имя функции, которую вы вызываете, чтобы увидеть больше людей со знанием предмета. Я также отступил ваш образец кода на 4 пробела, чтобы он отображался правильно - см. Справку по редактированию для получения дополнительной информации о форматировании. Измените конкретное сообщение об ошибке, с которым вы сталкиваетесь, в случае необходимости определить конкретную проблему. Удачи! – bozzmob