From d212cf66c11f68e4538742be6bf09d00d106174f Mon Sep 17 00:00:00 2001 From: Athou Date: Sun, 9 Jun 2013 16:19:49 +0200 Subject: [PATCH] change log level at runtime --- .../com/commafeed/backend/StartupBean.java | 2 ++ .../backend/model/ApplicationSettings.java | 11 ++++++++++ .../services/ApplicationSettingsService.java | 20 +++++++++++++++++++ src/main/webapp/templates/admin.settings.html | 7 +++++++ 4 files changed, 40 insertions(+) diff --git a/src/main/java/com/commafeed/backend/StartupBean.java b/src/main/java/com/commafeed/backend/StartupBean.java index 68f2556d..86207e79 100644 --- a/src/main/java/com/commafeed/backend/StartupBean.java +++ b/src/main/java/com/commafeed/backend/StartupBean.java @@ -72,10 +72,12 @@ public class StartupBean { @PostConstruct private void init() { + startupTime = Calendar.getInstance().getTimeInMillis(); if (userDAO.getCount() == 0) { initialData(); } + applicationSettingsService.applyLogLevel(); initSupportedLanguages(); diff --git a/src/main/java/com/commafeed/backend/model/ApplicationSettings.java b/src/main/java/com/commafeed/backend/model/ApplicationSettings.java index b3061ab9..0989e22c 100644 --- a/src/main/java/com/commafeed/backend/model/ApplicationSettings.java +++ b/src/main/java/com/commafeed/backend/model/ApplicationSettings.java @@ -7,6 +7,8 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.log4j.Level; + @Entity @Table(name = "APPLICATIONSETTINGS") @SuppressWarnings("serial") @@ -29,6 +31,7 @@ public class ApplicationSettings extends AbstractModel { private boolean heavyLoad; private boolean pubsubhubbub; private boolean feedbackButton = true; + private String logLevel = Level.INFO.toString(); @Column(length = 255) private String announcement; @@ -162,4 +165,12 @@ public class ApplicationSettings extends AbstractModel { this.databaseUpdateThreads = databaseUpdateThreads; } + public String getLogLevel() { + return logLevel; + } + + public void setLogLevel(String logLevel) { + this.logLevel = logLevel; + } + } diff --git a/src/main/java/com/commafeed/backend/services/ApplicationSettingsService.java b/src/main/java/com/commafeed/backend/services/ApplicationSettingsService.java index 6921e711..e08266ba 100644 --- a/src/main/java/com/commafeed/backend/services/ApplicationSettingsService.java +++ b/src/main/java/com/commafeed/backend/services/ApplicationSettingsService.java @@ -1,8 +1,14 @@ package com.commafeed.backend.services; +import java.util.Enumeration; + import javax.ejb.Singleton; import javax.inject.Inject; +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; + import com.commafeed.backend.dao.ApplicationSettingsDAO; import com.commafeed.backend.model.ApplicationSettings; import com.google.common.collect.Iterables; @@ -18,6 +24,7 @@ public class ApplicationSettingsService { public void save(ApplicationSettings settings) { this.settings = settings; applicationSettingsDAO.saveOrUpdate(settings); + applyLogLevel(); } public ApplicationSettings get() { @@ -28,4 +35,17 @@ public class ApplicationSettingsService { return settings; } + @SuppressWarnings("unchecked") + public void applyLogLevel() { + String logLevel = get().getLogLevel(); + Level level = Level.toLevel(logLevel); + + Enumeration loggers = LogManager.getCurrentLoggers(); + while (loggers.hasMoreElements()) { + Logger logger = loggers.nextElement(); + if (logger.getName().startsWith("com.commafeed")) { + logger.setLevel(level); + } + } + } } diff --git a/src/main/webapp/templates/admin.settings.html b/src/main/webapp/templates/admin.settings.html index fe0ffbe3..1693eda2 100644 --- a/src/main/webapp/templates/admin.settings.html +++ b/src/main/webapp/templates/admin.settings.html @@ -137,6 +137,13 @@ +
+ +
+ +
+