Java Logging – где мой файл журнала?
Я использую Java Logging – java.util.logging – в Eclipse 3.7.1 в Windows XP. Соответствующие строки моего файла logging.properties :
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler .level=INFO java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
Насколько я могу судить, после выполнения этих двух строк:
Logger logger = Logger.getLogger("test"); logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz");
мой файл журнала должен находиться в C:\Documents and Settings\[My Windows ID]\javaX.log , где X – целое число.
У меня есть 5 различных java.log файлов в этом каталоге, java0.log через java4.log , но ни одна из них не содержит мою запись журнала или даже запись с сегодняшней датой на ней. Я сделал несколько поисковых запросов и нашел Tracing and Logging, что означает, что мои журналы должны находиться в другом месте, c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log . Там есть один файл с именем plugin5581819941091650582.log , но он по существу пуст:
Дата его создания на прошлой неделе. (Я не уверен, какой процесс создал его, я определенно не создал его явно.)
Итак, где же мой файл журнала? Я не могу придумать нигде, чтобы посмотреть.
Кроме того, кто-нибудь знает, когда вступили в силу изменения в logging.properties ? Если я изменил уровень журнала или FileHandler.pattern , что должно было произойти до того, как моя программа увидела изменения? Просто сохранить изменения в logging.properties явно недостаточно. Мне нужно перезапустить Eclipse? Или перезагрузите компьютер? Просто любопытно. Это не так важно для меня, как выяснить, где мой файл журнала на самом деле.
Где находится ваш logging.properties файл? Он должен быть доступен в корневой папке classpath. Как проверка работоспособности, что печатает следующий код?
System.out.println(getClass().getClassLoader().getResource("logging.properties"));
Если код находится в контексте static , используйте
System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
Файл .log находится в папке \workspace.metadata. Я использую Eclipse 4.2.
Просто noob пытается помочь другим noobs.
Основная причина проблемы, с которой сталкивается вопросик, заключается в том, что его файл logging.properties не читается.
Файл, указанный в java.util.logging.config.file , не читается из пути к классам. Вместо этого он считывается из файловой системы относительно текущего каталога.
Например, выполнение следующей команды java -Djava.util.logging.config.file=smclient-logging.properties SMMain будет читать smclient-logging.properties из текущего каталога. После считывания правильного файла java.util.logging.config.ws журналы создаются, как указано в файле.
Расположение файла журнала может управляться через файл logging.properties. И он может быть передан как параметр JVM ex: java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Настройка обработчика файлов
Чтобы отправить журналы в файл, добавьте FileHandler в свойство обработчиков в файле logging.properties. Это позволит глобально регистрировать файлы.
handlers= java.util.logging.FileHandler
Настройте обработчик, установив следующие свойства:
java.util.logging.FileHandler.pattern=/logs/oaam.log java.util.logging.FileHandler.limit=50000 java.util.logging.FileHandler.count=1 java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern определяет местоположение и шаблон выходного файла. По умолчанию используется ваш домашний каталог.
java.util.logging.FileHandler.limit указывает в байтах максимальную сумму, которую записывает журнал на любой файл.
java.util.logging.FileHandler.count указывает, сколько выходных файлов будет выполняться.
java.util.logging.FileHandler.formatter указывает класс форматирования java.util.logging, который класс обработчика файлов использует для форматирования сообщений журнала. SimpleFormatter пишет краткие “человеко-читаемые” сводки журнальных записей.
Чтобы указать java для использования этого файла конфигурации вместо $JDK_HOME/jre/lib/logging.properties:
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Если его значение равно null, путь к файлу будет вашим домашним каталогом eclipse. Ваш файл logging.properties не разбивается на систему, поэтому укажите файл свойств на полный путь, как показано ниже, тогда ваш файл журнала будет сгенерирован вместо directr, где его предпочитает. -Djava.util.logging.config.file = D:\keplereclipse\keplerws\NFCInvoicingProject\WebContent\WEB-INF\logging.properties
Похоже, что местоположение по умолчанию изменилось. Чтобы найти свой лог файл, откройте Консоль Java с вашим приложением. там нажмите “s”. Это отображает свойства System и Deployment-Properties, в которых вы можете найти что-то вроде:
deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log
Там вы найдете свои файлы журналов.
- logger.getHandlers() вашу переменную или logger.getHandlers() : только для обработчика и найдите его личное поле: файлы
- Убедитесь, что ваш уровень ведения журнала, включая ваш журнал.
- Убедитесь, что ваш уровень обработчика, включая ваш журнал.
- Он будет отправлен в ваш домашний каталог. Если в вашей операционной системе нет этого каталога, такого как Windows 95/98/ME, файл должен быть сохранен по умолчанию, например, C:\Windows\ .
- Отражать, так же, как совет 1
Field[] handlerFiles = handler.getClass().getDeclaredFields(); AccessibleObject.setAccessible(handlerFiles, true); for (Field field : handlerFiles) < if (field.getName().equals("files")) < File[] files = (File[]) field.get(handler); System.out.println(Arrays.toString(files)); >>