From cb0d17104fa0ea91f78374ca861096ef642e1be2 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Wed, 26 Jun 2013 16:40:18 +0200 Subject: [PATCH] Migrate to SLF4J. --- .classpath | 2 + lib/README | 2 + lib/slf4j-api-1.7.5-sources.jar | Bin 0 -> 47186 bytes lib/slf4j-api-1.7.5.jar | Bin 0 -> 26084 bytes lib/slf4j-log4j12-1.7.5-sources.jar | Bin 0 -> 10350 bytes lib/slf4j-log4j12-1.7.5.jar | Bin 0 -> 8869 bytes src/fr/devinsy/util/DateHelper.java | 4 +- src/fr/devinsy/util/DateTimeHelper.java | 54 ++++++------------ src/fr/devinsy/util/cmdexec/CmdExec.java | 5 +- .../devinsy/util/cmdexec/StreamGobbler.java | 5 +- src/fr/devinsy/util/cmdexec/Wrapper.java | 5 +- src/fr/devinsy/util/unix/CachedFile.java | 5 +- src/fr/devinsy/util/unix/EtcGroupFile.java | 4 +- .../devinsy/util/unix/EtcGroupFileReader.java | 5 +- src/fr/devinsy/util/unix/EtcPasswdFile.java | 5 +- .../util/unix/EtcPasswdFileReader.java | 5 +- src/fr/devinsy/util/unix/Group.java | 4 +- src/fr/devinsy/util/unix/Groups.java | 4 +- src/fr/devinsy/util/unix/Unix.java | 5 +- src/fr/devinsy/util/unix/User.java | 4 +- src/fr/devinsy/util/unix/Users.java | 4 +- src/fr/devinsy/util/unix/acl/Acl.java | 3 +- src/fr/devinsy/util/unix/acl/AclEntries.java | 4 +- src/fr/devinsy/util/unix/acl/AclEntry.java | 5 +- src/fr/devinsy/util/unix/acl/AclManager.java | 5 +- test/CmdExecPlayer.java | 21 +++---- test/FileIteratorPlayer.java | 21 +++---- test/one/Foo2Test.java | 2 +- 28 files changed, 98 insertions(+), 85 deletions(-) create mode 100644 lib/slf4j-api-1.7.5-sources.jar create mode 100644 lib/slf4j-api-1.7.5.jar create mode 100644 lib/slf4j-log4j12-1.7.5-sources.jar create mode 100644 lib/slf4j-log4j12-1.7.5.jar diff --git a/.classpath b/.classpath index 3cdce40..714d253 100644 --- a/.classpath +++ b/.classpath @@ -8,5 +8,7 @@ + + diff --git a/lib/README b/lib/README index d64c866..f7df234 100644 --- a/lib/README +++ b/lib/README @@ -2,3 +2,5 @@ Description of used libraries: - hamcrest-core: required by junit - junit: unit tests API - log4j: log API +- slf4j-api: facade log API +- slf4j-log4j12: adaptation layer between slf4j and log4j diff --git a/lib/slf4j-api-1.7.5-sources.jar b/lib/slf4j-api-1.7.5-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..51abe2bb1aa4105db2ab607fa7956925adb6b096 GIT binary patch literal 47186 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 aDWfcR>!t&+eSwx``hpPo&VWmpa0Ytb+1{o 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 literal 0 HcmV?d00001 diff --git a/lib/slf4j-log4j12-1.7.5-sources.jar b/lib/slf4j-log4j12-1.7.5-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..ea1b93b833c4df5fa824c7984df60f134bf6dcf4 GIT binary patch literal 10350 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 literal 0 HcmV?d00001 diff --git a/src/fr/devinsy/util/DateHelper.java b/src/fr/devinsy/util/DateHelper.java index 1c5a6ee..8bd6c39 100755 --- a/src/fr/devinsy/util/DateHelper.java +++ b/src/fr/devinsy/util/DateHelper.java @@ -17,8 +17,8 @@ import java.util.regex.Pattern; */ public class DateHelper { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (DateHelper.class); + // static private final Logger logger = + // LoggerFactory.getLogger(DateHelper.class); static final String EUROPEAN_DATE_FORMAT = "%02d/%02d/%04d"; static final String SHORT_EUROPEAN_DATE_FORMAT = "%02d/%02d"; diff --git a/src/fr/devinsy/util/DateTimeHelper.java b/src/fr/devinsy/util/DateTimeHelper.java index 0fc807f..89be3a4 100755 --- a/src/fr/devinsy/util/DateTimeHelper.java +++ b/src/fr/devinsy/util/DateTimeHelper.java @@ -7,13 +7,13 @@ package fr.devinsy.util; import java.util.Calendar; - /** * This class groups function to help in Calendar manipulation. */ public class DateTimeHelper { - //static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (DateTimeHelper.class); + // static private final Logger logger = + // LoggerFactory.getLogger(DateTimeHelper.class); static final String EUROPEAN_DATE_FORMAT = "%02d/%02d/%04d %02d:%02d:%02d"; static final String RAW_DATE_FORMAT = "%04d%02d%02d %02d:%02d:%02d"; @@ -25,11 +25,10 @@ public class DateTimeHelper static final String ISO_DATE_PATTERN = "^(\\d\\d\\d\\d)-([01]\\d)-([0123]\\d)$"; static final String AMERICAN_DATE_PATTERN = "^([01]{0,1}\\d)/([0123]{0,1}\\d)/(\\d\\d\\d\\d)$"; - /** * */ - static public String europeanFormat (Calendar time) + static public String americanFormat(final Calendar time) { String result; @@ -39,23 +38,18 @@ public class DateTimeHelper } else { - result = String.format (EUROPEAN_DATE_FORMAT, time.get(Calendar.DAY_OF_MONTH), - time.get(Calendar.MONTH) + 1, - time.get(Calendar.YEAR), - time.get(Calendar.HOUR_OF_DAY), - time.get(Calendar.MINUTE), - time.get(Calendar.SECOND)); + result = String.format(AMERICAN_DATE_FORMAT, time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH), time.get(Calendar.YEAR), time.get(Calendar.HOUR_OF_DAY), + time.get(Calendar.MINUTE), time.get(Calendar.SECOND)); } // return (result); } - /** * */ - static public String ISOFormat (Calendar time) + static public String europeanFormat(final Calendar time) { String result; @@ -65,23 +59,18 @@ public class DateTimeHelper } else { - result = String.format (ISO_DATE_FORMAT, time.get(Calendar.YEAR), - time.get(Calendar.MONTH) + 1, - time.get(Calendar.DAY_OF_MONTH), - time.get(Calendar.HOUR_OF_DAY), - time.get(Calendar.MINUTE), - time.get(Calendar.SECOND)); + result = String.format(EUROPEAN_DATE_FORMAT, time.get(Calendar.DAY_OF_MONTH), time.get(Calendar.MONTH) + 1, time.get(Calendar.YEAR), time.get(Calendar.HOUR_OF_DAY), + time.get(Calendar.MINUTE), time.get(Calendar.SECOND)); } - + // return (result); } - /** * */ - static public String americanFormat (Calendar time) + static public String ISOFormat(final Calendar time) { String result; @@ -91,23 +80,18 @@ public class DateTimeHelper } else { - result = String.format (AMERICAN_DATE_FORMAT, time.get(Calendar.MONTH) + 1, - time.get(Calendar.DAY_OF_MONTH), - time.get(Calendar.YEAR), - time.get(Calendar.HOUR_OF_DAY), - time.get(Calendar.MINUTE), - time.get(Calendar.SECOND)); + result = String.format(ISO_DATE_FORMAT, time.get(Calendar.YEAR), time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH), time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), + time.get(Calendar.SECOND)); } - + // return (result); } - /** * */ - static public String rawFormat (Calendar time) + static public String rawFormat(final Calendar time) { String result; @@ -117,14 +101,10 @@ public class DateTimeHelper } else { - result = String.format (RAW_DATE_FORMAT, time.get(Calendar.YEAR), - time.get(Calendar.MONTH) + 1, - time.get(Calendar.DAY_OF_MONTH), - time.get(Calendar.HOUR_OF_DAY), - time.get(Calendar.MINUTE), - time.get(Calendar.SECOND)); + result = String.format(RAW_DATE_FORMAT, time.get(Calendar.YEAR), time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH), time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), + time.get(Calendar.SECOND)); } - + // return (result); } diff --git a/src/fr/devinsy/util/cmdexec/CmdExec.java b/src/fr/devinsy/util/cmdexec/CmdExec.java index 1dfbc4a..806c7fe 100644 --- a/src/fr/devinsy/util/cmdexec/CmdExec.java +++ b/src/fr/devinsy/util/cmdexec/CmdExec.java @@ -1,5 +1,8 @@ package fr.devinsy.util.cmdexec; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import fr.devinsy.util.StringConcatenator; /** @@ -8,7 +11,7 @@ import fr.devinsy.util.StringConcatenator; */ public class CmdExec { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(CmdExec.class); + static private final Logger logger = LoggerFactory.getLogger(CmdExec.class); protected int exitValue; protected String out; diff --git a/src/fr/devinsy/util/cmdexec/StreamGobbler.java b/src/fr/devinsy/util/cmdexec/StreamGobbler.java index f46c068..7c4f716 100644 --- a/src/fr/devinsy/util/cmdexec/StreamGobbler.java +++ b/src/fr/devinsy/util/cmdexec/StreamGobbler.java @@ -5,12 +5,15 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ public class StreamGobbler extends Thread { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(CmdExec.class); + static private final Logger logger = LoggerFactory.getLogger(CmdExec.class); static final public int NONE = 0; static final public int PRINT = 1; diff --git a/src/fr/devinsy/util/cmdexec/Wrapper.java b/src/fr/devinsy/util/cmdexec/Wrapper.java index 64d7cd8..5acb43d 100644 --- a/src/fr/devinsy/util/cmdexec/Wrapper.java +++ b/src/fr/devinsy/util/cmdexec/Wrapper.java @@ -5,13 +5,16 @@ import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ public class Wrapper { static private final Wrapper instance = new Wrapper(); - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Wrapper.class); + static private final Logger logger = LoggerFactory.getLogger(Wrapper.class); /** * return instance of the controller diff --git a/src/fr/devinsy/util/unix/CachedFile.java b/src/fr/devinsy/util/unix/CachedFile.java index 017e29f..906f7c7 100644 --- a/src/fr/devinsy/util/unix/CachedFile.java +++ b/src/fr/devinsy/util/unix/CachedFile.java @@ -2,6 +2,9 @@ package fr.devinsy.util.unix; import java.io.File; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ @@ -12,7 +15,7 @@ public class CachedFile NOT_LOAD, EXPIRED, UPDATED } - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(CachedFile.class); + static private final Logger logger = LoggerFactory.getLogger(CachedFile.class); protected String sourceName; protected long sourceTime; diff --git a/src/fr/devinsy/util/unix/EtcGroupFile.java b/src/fr/devinsy/util/unix/EtcGroupFile.java index 4062e3d..2f76c6b 100644 --- a/src/fr/devinsy/util/unix/EtcGroupFile.java +++ b/src/fr/devinsy/util/unix/EtcGroupFile.java @@ -7,8 +7,8 @@ import java.util.Vector; */ public class EtcGroupFile extends CachedFile { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (EtcGroupFile.class); + // static private final Logger logger = + // LoggerFactory.getLogger(EtcGroupFile.class); static EtcGroupFile instance = null; protected Groups groups; diff --git a/src/fr/devinsy/util/unix/EtcGroupFileReader.java b/src/fr/devinsy/util/unix/EtcGroupFileReader.java index 91322c6..01d47d5 100644 --- a/src/fr/devinsy/util/unix/EtcGroupFileReader.java +++ b/src/fr/devinsy/util/unix/EtcGroupFileReader.java @@ -4,12 +4,15 @@ import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ public class EtcGroupFileReader { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(EtcGroupFileReader.class); + static private final Logger logger = LoggerFactory.getLogger(EtcGroupFileReader.class); /** * diff --git a/src/fr/devinsy/util/unix/EtcPasswdFile.java b/src/fr/devinsy/util/unix/EtcPasswdFile.java index 323b262..6f73b39 100644 --- a/src/fr/devinsy/util/unix/EtcPasswdFile.java +++ b/src/fr/devinsy/util/unix/EtcPasswdFile.java @@ -1,11 +1,14 @@ package fr.devinsy.util.unix; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ public class EtcPasswdFile extends CachedFile { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(EtcPasswdFile.class); + static private final Logger logger = LoggerFactory.getLogger(EtcPasswdFile.class); static EtcPasswdFile instance = null; protected Users users; diff --git a/src/fr/devinsy/util/unix/EtcPasswdFileReader.java b/src/fr/devinsy/util/unix/EtcPasswdFileReader.java index 4d77ffc..76cbe71 100644 --- a/src/fr/devinsy/util/unix/EtcPasswdFileReader.java +++ b/src/fr/devinsy/util/unix/EtcPasswdFileReader.java @@ -4,12 +4,15 @@ import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * */ public class EtcPasswdFileReader { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(EtcPasswdFileReader.class); + static private final Logger logger = LoggerFactory.getLogger(EtcPasswdFileReader.class); /** * diff --git a/src/fr/devinsy/util/unix/Group.java b/src/fr/devinsy/util/unix/Group.java index 6ad14ae..3b3c5a5 100644 --- a/src/fr/devinsy/util/unix/Group.java +++ b/src/fr/devinsy/util/unix/Group.java @@ -7,8 +7,8 @@ import java.util.Vector; */ public class Group { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (Group.class); + // static private final Logger logger = + // LoggerFactory.getLogger(Group.class); /* * /usr/include/grp.h diff --git a/src/fr/devinsy/util/unix/Groups.java b/src/fr/devinsy/util/unix/Groups.java index 6904dee..5482f58 100644 --- a/src/fr/devinsy/util/unix/Groups.java +++ b/src/fr/devinsy/util/unix/Groups.java @@ -11,8 +11,8 @@ public class Groups extends Vector private static final long serialVersionUID = 5802487312198869603L; - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (Groups.class); + // static private final Logger logger = + // LoggerFactory.getLogger(Groups.class); /** * diff --git a/src/fr/devinsy/util/unix/Unix.java b/src/fr/devinsy/util/unix/Unix.java index e9ad064..236e04c 100644 --- a/src/fr/devinsy/util/unix/Unix.java +++ b/src/fr/devinsy/util/unix/Unix.java @@ -3,6 +3,9 @@ package fr.devinsy.util.unix; import java.io.File; import java.util.Vector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import fr.devinsy.util.StringConcatenator; import fr.devinsy.util.cmdexec.CmdExec; import fr.devinsy.util.unix.acl.Acl; @@ -13,7 +16,7 @@ import fr.devinsy.util.unix.acl.AclManager; */ public class Unix { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Unix.class); + static private final Logger logger = LoggerFactory.getLogger(Unix.class); static public final String SUDO = "/usr/bin/sudo"; /** diff --git a/src/fr/devinsy/util/unix/User.java b/src/fr/devinsy/util/unix/User.java index 249a801..358ccd9 100644 --- a/src/fr/devinsy/util/unix/User.java +++ b/src/fr/devinsy/util/unix/User.java @@ -1,12 +1,12 @@ package fr.devinsy.util.unix; + /** * */ public class User { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (User.class); + // static private final Logger logger = LoggerFactory.getLogger(User.class); /* * /usr/include/pwd.h diff --git a/src/fr/devinsy/util/unix/Users.java b/src/fr/devinsy/util/unix/Users.java index 4d8b0e5..6ac7609 100644 --- a/src/fr/devinsy/util/unix/Users.java +++ b/src/fr/devinsy/util/unix/Users.java @@ -10,8 +10,8 @@ public class Users extends Vector { private static final long serialVersionUID = -7178304512851592399L; - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (Users.class); + // static private final Logger logger = + // LoggerFactory.getLogger(Users.class); /** * diff --git a/src/fr/devinsy/util/unix/acl/Acl.java b/src/fr/devinsy/util/unix/acl/Acl.java index 0fdad46..7426ac5 100644 --- a/src/fr/devinsy/util/unix/acl/Acl.java +++ b/src/fr/devinsy/util/unix/acl/Acl.java @@ -5,8 +5,7 @@ package fr.devinsy.util.unix.acl; */ public class Acl { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (Acl.class); + // static private final Logger logger = LoggerFactory.getLogger(Acl.class); /* # file: goo39 diff --git a/src/fr/devinsy/util/unix/acl/AclEntries.java b/src/fr/devinsy/util/unix/acl/AclEntries.java index 8f3671b..957f4bb 100644 --- a/src/fr/devinsy/util/unix/acl/AclEntries.java +++ b/src/fr/devinsy/util/unix/acl/AclEntries.java @@ -10,8 +10,8 @@ public class AclEntries extends Vector { private static final long serialVersionUID = 5802487312198869603L; - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (AclEntries.class); + // static private final Logger logger = + // LoggerFactory.getLogger(AclEntries.class); /** * diff --git a/src/fr/devinsy/util/unix/acl/AclEntry.java b/src/fr/devinsy/util/unix/acl/AclEntry.java index b1dcf68..69b41f1 100644 --- a/src/fr/devinsy/util/unix/acl/AclEntry.java +++ b/src/fr/devinsy/util/unix/acl/AclEntry.java @@ -1,12 +1,13 @@ package fr.devinsy.util.unix.acl; + /** * */ public class AclEntry { - // static private org.apache.log4j.Logger logger = - // org.apache.log4j.Logger.getLogger (AclEntry.class); + // static private final Logger logger = + // LoggerFactory.getLogger(AclEntry.class); /* user::rwx diff --git a/src/fr/devinsy/util/unix/acl/AclManager.java b/src/fr/devinsy/util/unix/acl/AclManager.java index 787953d..82f0638 100644 --- a/src/fr/devinsy/util/unix/acl/AclManager.java +++ b/src/fr/devinsy/util/unix/acl/AclManager.java @@ -4,6 +4,9 @@ import java.io.File; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import fr.devinsy.util.StringConcatenator; import fr.devinsy.util.cmdexec.CmdExec; import fr.devinsy.util.unix.Unix; @@ -13,7 +16,7 @@ import fr.devinsy.util.unix.Unix; */ public class AclManager { - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(AclManager.class); + static private final Logger logger = LoggerFactory.getLogger(AclManager.class); static public final String SUDO = "/usr/bin/sudo"; static final public Pattern USER_PATTERN = Pattern.compile("^user:(.*):(.*)$"); diff --git a/test/CmdExecPlayer.java b/test/CmdExecPlayer.java index 9a4a0b3..3529dd4 100644 --- a/test/CmdExecPlayer.java +++ b/test/CmdExecPlayer.java @@ -1,3 +1,8 @@ +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.PatternLayout; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import fr.devinsy.util.cmdexec.CmdExec; import fr.devinsy.util.cmdexec.StreamGobbler; @@ -6,30 +11,26 @@ import fr.devinsy.util.cmdexec.StreamGobbler; */ class CmdExecPlayer { - static private org.apache.log4j.Logger logger; + static private final Logger logger; static { // Initialize logger. - org.apache.log4j.Logger logger = null; - org.apache.log4j.BasicConfigurator.configure(); + org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO); - logger = org.apache.log4j.Logger.getRootLogger(); - // logger.setLevel (org.apache.log4j.Level.INFO); - logger.setLevel(org.apache.log4j.Level.INFO); - + logger = LoggerFactory.getLogger(CmdExecPlayer.class); logger.info("Enter"); // logger.info("Set the log file format..."); + org.apache.log4j.Logger defaultLogger = org.apache.log4j.Logger.getRootLogger(); + defaultLogger.removeAllAppenders(); + defaultLogger.addAppender(new ConsoleAppender(new PatternLayout("%d{ISO8601} - dutils [%-5p] %34.34c.%-25M - %m%n"))); - // log = - // org.apache.log4j.Category.getInstance(Application.class.getName()); logger.info("... done."); logger.debug("Exit"); - logger = org.apache.log4j.Logger.getLogger(CmdExecPlayer.class); } /** diff --git a/test/FileIteratorPlayer.java b/test/FileIteratorPlayer.java index 426c1cd..31ee6d4 100644 --- a/test/FileIteratorPlayer.java +++ b/test/FileIteratorPlayer.java @@ -1,9 +1,9 @@ import java.io.File; -import org.apache.log4j.BasicConfigurator; import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import fr.devinsy.util.FileIterator; @@ -12,22 +12,23 @@ import fr.devinsy.util.FileIterator; */ public class FileIteratorPlayer { - static private org.apache.log4j.Logger logger; + static private final Logger logger; static { // Initialize logger. + org.apache.log4j.BasicConfigurator.configure(); + org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG); - BasicConfigurator.configure(); - Logger defaultLogger = org.apache.log4j.Logger.getRootLogger(); - defaultLogger.setLevel(org.apache.log4j.Level.DEBUG); + logger = LoggerFactory.getLogger(CmdExecPlayer.class); + // + org.apache.log4j.Logger defaultLogger = org.apache.log4j.Logger.getRootLogger(); defaultLogger.removeAllAppenders(); - defaultLogger.addAppender(new ConsoleAppender(new PatternLayout("%d{ISO8601} - FIT [%-5p] %34.34c.%-25M - %m%n"))); + defaultLogger.addAppender(new ConsoleAppender(new PatternLayout("%d{ISO8601} - dutils [%-5p] %34.34c.%-25M - %m%n"))); - defaultLogger.debug("Log initialized."); - - logger = org.apache.log4j.Logger.getLogger(FileIteratorPlayer.class.getName()); + // + logger.debug("Log initialized."); } /** diff --git a/test/one/Foo2Test.java b/test/one/Foo2Test.java index 0b98fdf..83d24a8 100644 --- a/test/one/Foo2Test.java +++ b/test/one/Foo2Test.java @@ -4,7 +4,7 @@ import org.junit.Test; public class Foo2Test { - // private Logger logger = + // static private final Logger logger = // LoggerFactory.getLogger(PdfGenerationAmqpServiceInjectedTest.class); /**