@@ -71,26 +71,29 @@ public abstract class AbstractLogService extends AbstractService implements
7171 // -- constructor --
7272
7373 public AbstractLogService () {
74+ this (System .getProperties ());
75+ }
76+
77+ public AbstractLogService (final Properties properties ) {
7478 // check SciJava log level system properties for initial logging levels
7579
7680 // global log level property
77- final String logProp = System .getProperty (LOG_LEVEL_PROPERTY );
78- final int level = level (logProp );
81+ final String logProp = properties .getProperty (LOG_LEVEL_PROPERTY );
82+ final int level = LogLevel . value (logProp );
7983 if (level >= 0 ) setLevel (level );
8084
8185 if (getLevel () == 0 )
8286 setLevel (levelFromEnvironment ());
8387
8488 // populate custom class- and package-specific log level properties
8589 final String logLevelPrefix = LOG_LEVEL_PROPERTY + ":" ;
86- final Properties props = System .getProperties ();
87- for (final Object propKey : props .keySet ()) {
90+ for (final Object propKey : properties .keySet ()) {
8891 if (!(propKey instanceof String )) continue ;
8992 final String propName = (String ) propKey ;
9093 if (!propName .startsWith (logLevelPrefix )) continue ;
9194 final String classOrPackageName =
9295 propName .substring (logLevelPrefix .length ());
93- setLevel (classOrPackageName , level ( props .getProperty (propName )));
96+ setLevel (classOrPackageName , LogLevel . value ( properties .getProperty (propName )));
9497 }
9598
9699 }
@@ -107,127 +110,110 @@ protected void log(final int level, final Object msg, final Throwable t) {
107110 }
108111
109112 protected void log (final int level , final Object msg ) {
110- final String prefix = getPrefix (level );
113+ final String prefix = LogLevel . prefix (level );
111114 log ((prefix == null ? "" : prefix + " " ) + msg );
112115 }
113116
114- protected String getPrefix (final int level ) {
115- switch (level ) {
116- case ERROR :
117- return "[ERROR]" ;
118- case WARN :
119- return "[WARNING]" ;
120- case INFO :
121- return "[INFO]" ;
122- case DEBUG :
123- return "[DEBUG]" ;
124- case TRACE :
125- return "[TRACE]" ;
126- default :
127- return null ;
128- }
129- }
130-
131117 // -- LogService methods --
132118
133119 @ Override
134120 public void debug (final Object msg ) {
135- log (DEBUG , msg , null );
121+ log (LogLevel . DEBUG , msg , null );
136122 }
137123
138124 @ Override
139125 public void debug (final Throwable t ) {
140- log (DEBUG , null , t );
126+ log (LogLevel . DEBUG , null , t );
141127 }
142128
143129 @ Override
144130 public void debug (final Object msg , final Throwable t ) {
145- log (DEBUG , msg , t );
131+ log (LogLevel . DEBUG , msg , t );
146132 }
147133
148134 @ Override
149135 public void error (final Object msg ) {
150- log (ERROR , msg , null );
136+ log (LogLevel . ERROR , msg , null );
151137 }
152138
153139 @ Override
154140 public void error (final Throwable t ) {
155- log (ERROR , null , t );
141+ log (LogLevel . ERROR , null , t );
156142 }
157143
158144 @ Override
159145 public void error (final Object msg , final Throwable t ) {
160- log (ERROR , msg , t );
146+ log (LogLevel . ERROR , msg , t );
161147 }
162148
163149 @ Override
164150 public void info (final Object msg ) {
165- log (INFO , msg , null );
151+ log (LogLevel . INFO , msg , null );
166152 }
167153
168154 @ Override
169155 public void info (final Throwable t ) {
170- log (INFO , null , t );
156+ log (LogLevel . INFO , null , t );
171157 }
172158
173159 @ Override
174160 public void info (final Object msg , final Throwable t ) {
175- log (INFO , msg , t );
161+ log (LogLevel . INFO , msg , t );
176162 }
177163
178164 @ Override
179165 public void trace (final Object msg ) {
180- log (TRACE , msg , null );
166+ log (LogLevel . TRACE , msg , null );
181167 }
182168
183169 @ Override
184170 public void trace (final Throwable t ) {
185- log (TRACE , null , t );
171+ log (LogLevel . TRACE , null , t );
186172 }
187173
188174 @ Override
189175 public void trace (final Object msg , final Throwable t ) {
190- log (TRACE , msg , t );
176+ log (LogLevel . TRACE , msg , t );
191177 }
192178
193179 @ Override
194180 public void warn (final Object msg ) {
195- log (WARN , msg , null );
181+ log (LogLevel . WARN , msg , null );
196182 }
197183
198184 @ Override
199185 public void warn (final Throwable t ) {
200- log (WARN , null , t );
186+ log (LogLevel . WARN , null , t );
201187 }
202188
203189 @ Override
204190 public void warn (final Object msg , final Throwable t ) {
205- log (WARN , msg , t );
191+ log (LogLevel . WARN , msg , t );
206192 }
207193
208194 @ Override
209195 public boolean isDebug () {
210- return getLevel () >= DEBUG ;
196+ return getLevel () >= LogLevel . DEBUG ;
211197 }
212198
213199 @ Override
214200 public boolean isError () {
215- return getLevel () >= ERROR ;
201+ return getLevel () >= LogLevel . ERROR ;
216202 }
217203
218204 @ Override
219205 public boolean isInfo () {
220- return getLevel () >= INFO ;
206+ return getLevel () >= LogLevel . INFO ;
221207 }
222208
223209 @ Override
224210 public boolean isTrace () {
225- return getLevel () >= TRACE ;
211+ return getLevel () >= LogLevel . TRACE ;
226212 }
227213
228214 @ Override
229215 public boolean isWarn () {
230- return getLevel () >= WARN ;
216+ return getLevel () >= LogLevel . WARN ;
231217 }
232218
233219 @ Override
@@ -255,31 +241,16 @@ public void setLevel(final String classOrPackageName, final int level) {
255241 classAndPackageLevels .put (classOrPackageName , level );
256242 }
257243
258- // -- Helper methods --
244+ // -- Deprecated --
259245
260- /** Extracts the log level value from a string. */
261- private int level (final String logProp ) {
262- if (logProp == null ) return -1 ;
263-
264- // check whether it's a string label (e.g., "debug")
265- final String log = logProp .trim ().toLowerCase ();
266- if (log .startsWith ("n" )) return NONE ;
267- if (log .startsWith ("e" )) return ERROR ;
268- if (log .startsWith ("w" )) return WARN ;
269- if (log .startsWith ("i" )) return INFO ;
270- if (log .startsWith ("d" )) return DEBUG ;
271- if (log .startsWith ("t" )) return TRACE ;
272-
273- // check whether it's a numerical value (e.g., 5)
274- try {
275- return Integer .parseInt (log );
276- }
277- catch (final NumberFormatException exc ) {
278- // nope!
279- }
280- return -1 ;
246+ /** @deprecated Use {@link LogLevel#prefix(int)} instead. */
247+ @ Deprecated
248+ protected String getPrefix (final int level ) {
249+ return "[" + LogLevel .prefix (level ) + "]" ;
281250 }
282251
252+ // -- Helper methods --
253+
283254 private String callingClass () {
284255 final String thisClass = AbstractLogService .class .getName ();
285256 for (final StackTraceElement element : new Exception ().getStackTrace ()) {
@@ -298,7 +269,7 @@ private String parentPackage(final String classOrPackageName) {
298269
299270 private int levelFromEnvironment () {
300271 // use the default, which is INFO unless the DEBUG env. variable is set
301- return System .getenv ("DEBUG" ) == null ? INFO : DEBUG ;
272+ return System .getenv ("DEBUG" ) == null ? LogLevel . INFO : LogLevel . DEBUG ;
302273 }
303274
304275}
0 commit comments