В приведенной выше конфигурации log4j вы создаете ConsoleAppender , который выводит все ваши сообщения на стандартный вывод. Это то же местоположение, что и вызовы System.out.println (). Теперь, когда вы создали 2-го приложения ( FileAppender ), вы больше не пишете в стандартный формат, а теперь пишете в файл.
Я бы предложил изменить вызовы system.out.println () для использования Log4j вызовов [error (), info (), debug () и т. Д.]
public class MyClass{
private static Logger logger = Logger.getLogger(MyClass.class);
public MyClass(){
logger.debug("Hello World");
}
}
Делая это, вы не будете смешивать и сопоставлять ваш log4j с вашими стандартными исходящими вызовами, а затем сможете настраивать приложение по мере необходимости между консолью и записью файлов. Хорошим преимуществом использования Logger по сравнению с вызовами System.out является то, что они настраиваются во время выполнения и могут регистрировать сообщения на различных уровнях.
Редактировать в соответствии с комментариями
Tomcat по умолчанию записывает сообщения стандартного вывода в %tomcat_home%/logs/catalina.out
(имя может немного отличаться в зависимости от спецификаций tomcat) Tomcat использует инфраструктуру ведения журнала под названием JULI для выполнения своих основных операций ведения журнала. Если вы просто хотите, чтобы журнал записывался где-то еще, а не в папку tomcat, вы можете сделать это, отредактировав файл
% TOMCAT_HOME / CONF / logging.properties
Другой сценарий, который вы можете решить, - это полное перенаправление stdout. Это осуждается, но может быть сделано. Если вы посмотрите на файл catalina.bat (или .sh в unix), вы увидите опцию запуска LOGGING_MANAGER, которая переопределит реализацию JULI по умолчанию. Я никогда не использовал эту опцию, поэтому вам нужно изучить ее более подробно. Чтобы лучше понять JULI, прочитайте статью вики Apache