55import ch .qos .logback .classic .encoder .PatternLayoutEncoder ;
66import ch .qos .logback .classic .filter .ThresholdFilter ;
77import ch .qos .logback .core .rolling .RollingFileAppender ;
8- import ch .qos .logback .core .rolling .SizeAndTimeBasedFNATP ;
9- import ch .qos .logback .core .rolling . TimeBasedRollingPolicy ;
8+ import ch .qos .logback .core .rolling .SizeAndTimeBasedRollingPolicy ;
9+ import ch .qos .logback .core .util . FileSize ;
1010import cz .cuni .mff .xrg .odcs .backend .auxiliaries .AppLock ;
1111import cz .cuni .mff .xrg .odcs .backend .auxiliaries .DatabaseInitializer ;
1212import cz .cuni .mff .xrg .odcs .backend .communication .EmbeddedHttpServer ;
1515import cz .cuni .mff .xrg .odcs .backend .logback .SqlAppender ;
1616import cz .cuni .mff .xrg .odcs .commons .app .conf .AppConfig ;
1717import cz .cuni .mff .xrg .odcs .commons .app .conf .ConfigProperty ;
18+ import cz .cuni .mff .xrg .odcs .commons .app .conf .MissingConfigPropertyException ;
1819import cz .cuni .mff .xrg .odcs .commons .app .execution .log .Log ;
1920import cz .cuni .mff .xrg .odcs .commons .app .facade .ModuleFacade ;
2021import org .h2 .store .fs .FileUtils ;
@@ -54,39 +55,25 @@ public class AppEntry {
5455 private EmbeddedHttpServer httpProbeServer ;
5556
5657 private RollingFileAppender createAppender (LoggerContext loggerContext ,
57- String logDirectory , String logFile , int logHistory ) {
58+ String logDirectory , String logFile , int logHistory , String logMaxSize ) {
5859 final RollingFileAppender rfAppender = new RollingFileAppender ();
5960 rfAppender .setContext (loggerContext );
6061 rfAppender .setFile (logDirectory + logFile + ".log" );
6162 {
62- TimeBasedRollingPolicy rollingPolicy = new TimeBasedRollingPolicy ();
63+ SizeAndTimeBasedRollingPolicy rollingPolicy = new SizeAndTimeBasedRollingPolicy ();
6364 rollingPolicy .setContext (loggerContext );
6465 // rolling policies need to know their parent
6566 // it's one of the rare cases, where a sub-component knows about its parent
6667 rollingPolicy .setParent (rfAppender );
6768 rollingPolicy .setFileNamePattern (logDirectory + logFile + ".%d{yyyy-MM-dd}.%i.log" );
68- //rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(timeBasedTriggeringPolicy);
6969 rollingPolicy .setMaxHistory (logHistory );
70+ rollingPolicy .setTotalSizeCap (FileSize .valueOf (logMaxSize ));
71+ rollingPolicy .setMaxFileSize (FileSize .valueOf ("10MB" ));
7072
7173 rfAppender .setRollingPolicy (rollingPolicy );
7274
73- SizeAndTimeBasedFNATP triggeringPolicy ;
74- {
75- // triger for name changing
76- triggeringPolicy = new SizeAndTimeBasedFNATP ();
77- triggeringPolicy .setMaxFileSize ("10MB" );
78- triggeringPolicy .setTimeBasedRollingPolicy (rollingPolicy );
79- rfAppender .setTriggeringPolicy (triggeringPolicy );
80- }
81-
82- rollingPolicy .setTimeBasedFileNamingAndTriggeringPolicy (triggeringPolicy );
8375 rollingPolicy .start ();
8476
85- {
86- // we need TimeBasedRollingPolicy to have the
87- // FileNamePattern pattern initialized which is done in rollingPolicy.start();
88- triggeringPolicy .start ();
89- }
9077 }
9178 PatternLayoutEncoder encoder = new PatternLayoutEncoder ();
9279 encoder .setContext (loggerContext );
@@ -112,11 +99,13 @@ private void initLogbackAppender() {
11299 logDirectory = logDirectory + File .separator ;
113100 }
114101 } catch (Exception e ) {
102+ //not logging exception, default value is used in this case
115103 }
116104
117105 try {
118106 logHistory = appConfig .getInteger (ConfigProperty .BACKEND_LOG_KEEP );
119107 } catch (Exception e ) {
108+ //not logging exception, default value is used in this case
120109 }
121110
122111 // check existance of directory
@@ -132,16 +121,27 @@ private void initLogbackAppender() {
132121 }
133122 }
134123
124+
125+ //check if there is any preferred max size for logs
126+ String logMaxSize = "1GB" ;
127+ // we try to load values from configuration
128+ try {
129+ logMaxSize = appConfig .getString (ConfigProperty .BACKEND_LOG_MAX_SIZE );
130+ // user set path, ensure that it end's on file separator
131+ } catch (MissingConfigPropertyException e ) {
132+ //not logging exception, default value is used in this case
133+ }
134+
135135 // now prepare the logger
136136
137137 final LoggerContext loggerContext = (LoggerContext ) LoggerFactory .getILoggerFactory ();
138138
139139 RollingFileAppender allLog = createAppender (loggerContext , logDirectory ,
140- "backend" , logHistory );
140+ "backend" , logHistory , logMaxSize );
141141 allLog .start ();
142142
143143 RollingFileAppender errorLog = createAppender (loggerContext , logDirectory ,
144- "backend_err" , logHistory );
144+ "backend_err" , logHistory , logMaxSize );
145145 {
146146 // add filter
147147 ThresholdFilter levelFilter = new ThresholdFilter ();
@@ -199,7 +199,7 @@ private void run() throws Exception {
199199 lockKey .append (appConfig .getInteger (ConfigProperty .BACKEND_PORT ));
200200 if (!AppLock .setLock (lockKey .toString ())) {
201201 // another application is already running
202- LOG .info ("Another instance of UnifiedViews is probably running." );
202+ LOG .warn ("Another instance of UnifiedViews is already running on this machine ." );
203203 return ;
204204 }
205205
0 commit comments