Журнал Java - где мой файл журнала? - PullRequest
23 голосов
/ 27 февраля 2012

У меня проблемы с поиском файлов журналов.

Я использую 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, но он практически пустой:

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
</log>

Дата его создания - последняя неделя. (Я не уверен, какой процесс его создал; я определенно не создавал его явно.)

Так где же тогда мой лог-файл? Я не могу думать нигде, чтобы посмотреть.

Кроме того, кто-нибудь знает, когда изменения в logging.properties вступают в силу? Если бы я изменил уровень журнала или FileHandler.pattern, что бы произошло, прежде чем моя программа увидела изменения? Простого сохранения изменений в logging.properties явно недостаточно. Нужно ли перезапускать Eclipse? Или перезагрузить компьютер? Просто любопытно. Для меня это не так важно, как выяснить, где на самом деле находится мой лог-файл.

Ответы [ 7 ]

16 голосов
/ 27 февраля 2012

Где находится ваш файл logging.properties?Он должен быть доступен в корне пути к классам.В качестве проверки работоспособности, что печатает следующий код?

System.out.println(getClass().getClassLoader().getResource("logging.properties"));

Если код находится в контексте static, используйте

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
2 голосов
/ 19 июля 2016

Основная причина проблемы, с которой сталкивается спрашивающий, заключается в том, что его файл logging.properties не читается.
Файл, указанный в java.util.logging.config.file, не читается из пути к классам.Вместо этого он считывается из файловой системы относительно текущего каталога.
Например, при запуске следующей команды java -Djava.util.logging.config.file=smclient-logging.properties SMMain будет считано smclient-logging.properties из текущего каталога.После считывания правильного файла java.util.logging.config.file создаются журналы, как указано в файле.

2 голосов
/ 02 августа 2013

Файл .log находится в папке \ workspace.metadata.Я использую Eclipse 4.2.Просто нуб, пытающийся помочь другим нубам.

1 голос
/ 31 января 2017

Расположение файла журнала можно контролировать через файл logging.properties.И его можно передать как параметр JVM, например: java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

Подробности: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

Настройка обработчика файла

Для отправки журналов вфайл, добавьте FileHandler в свойство обработчиков в файле logging.properties.Это включит ведение журнала файлов глобально.

handlers= java.util.logging.FileHandler

Настройте обработчик, задав следующие свойства:

java.util.logging.FileHandler.pattern=<home directory>/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
0 голосов
/ 28 января 2019
  1. Отладка вашей переменной или logger.getHandlers(): только для экземпляров FileHandler и найдите его личное поле: файлы
  2. Убедитесь, что ваш уровень логгера, включая ваш лог.
  3. Убедитесь, что ваш уровень обработчика, включая ваш журнал.
  4. Он будет отправлен в ваш домашний каталог. Если в вашей операционной системе нет этого каталога, такого как Windows 95/98 / ME, файл должен быть сохранен по умолчанию, например C:\Windows\.
  5. Отражать, так же, как совет 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));
        }
    }
    
  6. Менеджер журналов будет инициализирован во время запуска JVM и завершен до основного метода. Вы также можете повторно инициализировать его в основном методе с помощью System.setProperty("java.util.logging.config.file", file), который вызовет LogManager.readConfiguration().

0 голосов
/ 03 августа 2016

Кажется, что расположение по умолчанию изменилось. Чтобы найти свой лог-файл, откройте консоль Java с вашим приложением. там нажмите "s". Это распечатывает System- и Deployment-Properties, где вы можете найти что-то вроде:

deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log

Там вы найдете свои лог-файлы.

0 голосов
/ 29 декабря 2013

Если его значение равно NULL, тогда путь к файлу будет вашим домашним каталогом Eclipse.Ваш файл logging.properties не обрабатывается системой, поэтому укажите файлу свойств полный путь, как показано ниже, и ваш файл журнала будет сгенерирован в том месте, где вы предпочитаете его.-Djava.util.logging.config.file = D: \ keplereclipse \ keplerws \ NFCInvoicingProject \ WebContent \ WEB-INF \ logging.properties

...