У меня глупая проблема с журналированием java: я загружаю конфигурацию журналирования из файла конфигурации моего приложения, но он просто ничего не регистрирует после прочтения файла (что очень похоже на примеры, которые вы найдете в сети, за исключением дополнительная настройка приложения - удаление тоже не помогает). Строка журнала "initializing ..." выглядит нормально, но "стартовое приложение" и любые другие сообщения не регистрируются в консоли, и файл журнала никогда не создается. Что мне здесь не хватает?
Код Logger выглядит так:
...
Logger log = Logger.getLogger("myApp");
log.setLevel(Level.ALL);
log.info("initializing - trying to load configuration file ...");
Properties preferences = new Properties();
try {
FileInputStream configFile = new FileInputStream("/path/to/app.properties");
preferences.load(configFile);
LogManager.getLogManager().readConfiguration(configFile);
} catch (IOException ex)
{
System.out.println("WARNING: Could not open configuration file");
System.out.println("WARNING: Logging not configured (console output only)");
}
log.info("starting myApp");
...
А это файл конфигурации:
appconfig1 = foo
appconfig2 = bar
# Logging
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
# File Logging
java.util.logging.FileHandler.pattern = %h/myApp.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = INFO
# Console Logging
java.util.logging.ConsoleHandler.level = ALL
вы можете установить файл конфигурации ведения журнала через командную строку:
так кажется чище и проще в обслуживании.
источник
Я пробовал ваш код в приведенном выше коде, не используйте оператор [preferences.load (configFile);], и он будет работать. Здесь выполняется образец кода
public static void main(String[]s) { Logger log = Logger.getLogger("MyClass"); try { FileInputStream fis = new FileInputStream("p.properties"); LogManager.getLogManager().readConfiguration(fis); log.setLevel(Level.FINE); log.addHandler(new java.util.logging.ConsoleHandler()); log.setUseParentHandlers(false); log.info("starting myApp"); fis.close(); } catch(IOException e) { e.printStackTrace(); } }
источник
Logger log = Logger.getLogger("myApp"); log.setLevel(Level.ALL); log.info("initializing - trying to load configuration file ..."); //Properties preferences = new Properties(); try { //FileInputStream configFile = new //FileInputStream("/path/to/app.properties"); //preferences.load(configFile); InputStream configFile = myApp.class.getResourceAsStream("app.properties"); LogManager.getLogManager().readConfiguration(configFile); } catch (IOException ex) { System.out.println("WARNING: Could not open configuration file"); System.out.println("WARNING: Logging not configured (console output only)"); } log.info("starting myApp");
это работает .. :) вы должны передать InputStream в readConfiguration ().
источник
Вы ищете файл журнала по правильному пути:% h / one% u.log
Здесь% h соответствует вашему дому: В Windows это по умолчанию: C: \ Documents and Settings (имя_пользователя).
Я попробовал опубликованный вами образец кода, и он отлично работает после того, как вы укажете путь к файлу конфигурации (logging.properties через код или java args).
источник