You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2012/07/19 01:47:49 UTC
svn commit: r1363177 - in /commons/proper/logging/trunk: RELEASE-NOTES.txt
src/java/org/apache/commons/logging/LogFactory.java
Author: sebb
Date: Wed Jul 18 23:47:49 2012
New Revision: 1363177
URL: http://svn.apache.org/viewvc?rev=1363177&view=rev
Log:
LOGGING-148 - LogFactory.diagnosticPrefix and diagnosticsStream could be final
Modified:
commons/proper/logging/trunk/RELEASE-NOTES.txt
commons/proper/logging/trunk/src/java/org/apache/commons/logging/LogFactory.java
Modified: commons/proper/logging/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/logging/trunk/RELEASE-NOTES.txt?rev=1363177&r1=1363176&r2=1363177&view=diff
==============================================================================
--- commons/proper/logging/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/logging/trunk/RELEASE-NOTES.txt Wed Jul 18 23:47:49 2012
@@ -23,6 +23,7 @@ LOGGING-145 - LogFactoryImpl.setAttribut
LOGGING-142 - Log4JLogger uses deprecated static members of Priority such as INFO
LOGGING-128 - Static analysis suggests a number of potential improvements
LOGGING-147 - SimpleLog.log - unsafe update of shortLogName
+LOGGING-148 - LogFactory.diagnosticPrefix and diagnosticsStream could be final
$Id$
Modified: commons/proper/logging/trunk/src/java/org/apache/commons/logging/LogFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/logging/trunk/src/java/org/apache/commons/logging/LogFactory.java?rev=1363177&r1=1363176&r2=1363177&view=diff
==============================================================================
--- commons/proper/logging/trunk/src/java/org/apache/commons/logging/LogFactory.java (original)
+++ commons/proper/logging/trunk/src/java/org/apache/commons/logging/LogFactory.java Wed Jul 18 23:47:49 2012
@@ -153,7 +153,7 @@ public abstract class LogFactory {
* logDiagnostic method, so that users can clearly see which
* LogFactory class is generating the output.
*/
- private static String diagnosticPrefix;
+ private static final String diagnosticPrefix;
/**
* <p>Setting this system property
@@ -1587,55 +1587,33 @@ public abstract class LogFactory {
* output by setting the system property named {@link #DIAGNOSTICS_DEST_PROPERTY} to
* a filename, or the special values STDOUT or STDERR.
*/
- private static void initDiagnostics() {
+ private static PrintStream initDiagnostics() {
String dest;
try {
dest = getSystemProperty(DIAGNOSTICS_DEST_PROPERTY, null);
if (dest == null) {
- return;
+ return null;
}
} catch(SecurityException ex) {
// We must be running in some very secure environment.
// We just have to assume output is not wanted..
- return;
+ return null;
}
if (dest.equals("STDOUT")) {
- diagnosticsStream = System.out;
+ return System.out;
} else if (dest.equals("STDERR")) {
- diagnosticsStream = System.err;
+ return System.err;
} else {
try {
// open the file in append mode
FileOutputStream fos = new FileOutputStream(dest, true);
- diagnosticsStream = new PrintStream(fos);
+ return new PrintStream(fos);
} catch(IOException ex) {
// We should report this to the user - but how?
- return;
- }
- }
-
- // In order to avoid confusion where multiple instances of JCL are
- // being used via different classloaders within the same app, we
- // ensure each logged message has a prefix of form
- // [LogFactory from classloader OID]
- //
- // Note that this prefix should be kept consistent with that
- // in LogFactoryImpl. However here we don't need to output info
- // about the actual *instance* of LogFactory, as all methods that
- // output diagnostics from this class are static.
- String classLoaderName;
- try {
- ClassLoader classLoader = thisClassLoader;
- if (thisClassLoader == null) {
- classLoaderName = "BOOTLOADER";
- } else {
- classLoaderName = objectId(classLoader);
+ return null;
}
- } catch(SecurityException e) {
- classLoaderName = "UNKNOWN";
}
- diagnosticPrefix = "[LogFactory from " + classLoaderName + "] ";
}
/**
@@ -1832,7 +1810,28 @@ public abstract class LogFactory {
// note: it's safe to call methods before initDiagnostics (though
// diagnostic output gets discarded).
thisClassLoader = getClassLoader(LogFactory.class);
- initDiagnostics();
+ // In order to avoid confusion where multiple instances of JCL are
+ // being used via different classloaders within the same app, we
+ // ensure each logged message has a prefix of form
+ // [LogFactory from classloader OID]
+ //
+ // Note that this prefix should be kept consistent with that
+ // in LogFactoryImpl. However here we don't need to output info
+ // about the actual *instance* of LogFactory, as all methods that
+ // output diagnostics from this class are static.
+ String classLoaderName;
+ try {
+ ClassLoader classLoader = thisClassLoader;
+ if (thisClassLoader == null) {
+ classLoaderName = "BOOTLOADER";
+ } else {
+ classLoaderName = objectId(classLoader);
+ }
+ } catch(SecurityException e) {
+ classLoaderName = "UNKNOWN";
+ }
+ diagnosticPrefix = "[LogFactory from " + classLoaderName + "] ";
+ diagnosticsStream = initDiagnostics();
logClassLoaderEnvironment(LogFactory.class);
factories = createFactoryStore();
if (isDiagnosticsEnabled()) {