1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package edu.internet2.middleware.shibboleth.common.log;
19
20 import java.util.Timer;
21
22 import org.opensaml.util.resource.FilesystemResource;
23 import org.opensaml.util.resource.Resource;
24 import org.opensaml.util.resource.ResourceChangeWatcher;
25 import org.opensaml.util.resource.ResourceException;
26 import org.slf4j.LoggerFactory;
27
28 import ch.qos.logback.classic.LoggerContext;
29 import ch.qos.logback.core.status.ErrorStatus;
30 import ch.qos.logback.core.status.StatusManager;
31
32
33
34
35 public class LogbackLoggingService {
36
37
38
39
40
41
42
43
44 public LogbackLoggingService(Timer taskTimer, String loggingConfigurationFile, long pollingFrequency) {
45 LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
46 StatusManager statusManager = loggerContext.getStatusManager();
47
48 try{
49 Resource configResource = new FilesystemResource(loggingConfigurationFile);
50 LogbackConfigurationChangeListener configChangeListener = new LogbackConfigurationChangeListener();
51 configChangeListener.onResourceCreate(configResource);
52
53 ResourceChangeWatcher resourceWatcher = new ResourceChangeWatcher(configResource, pollingFrequency, 5);
54 resourceWatcher.getResourceListeners().add(configChangeListener);
55
56 taskTimer.schedule(resourceWatcher, 0, pollingFrequency);
57 }catch(ResourceException e){
58 statusManager.add(new ErrorStatus("Error loading logging configuration file: "
59 + loggingConfigurationFile, this, e));
60 }
61 }
62 }