Logging in Marauroa
Writing to log files or a terminal window is a low technology way of working out what your code is doing; you may also write to log files on key events to give a historical record or audit trail. The log4j package provides logging capabilities for Java programs. This page gives a quick overview of log4j, and a summary of how and where it is used in Marauroa. For more details see the [log4j home site].
Summary[编辑]
The simple description is that when writing code, a logger object is created in each class definition where logging is required. Each logger has several methods that relate to the importance (level) of a message to be logged. These are TRACE < DEBUG < INFO < WARN < ERROR < FATAL with TRACE being the lowest priority and FATAL the highest. A example might be:
    logger.warn("This is a warning message");
The behaviour of the logging is controlled by a configuration file. This specifies:
- The default (root) logging level and any output stream names (appenders)
For each appender:
- The type of appender, i.e. the output stream, e.g.
- ConsoleAppender, FileAppender, RollingFileAppender (and others)
 
- The format of the output
- PatternLayout, XMLLayout
 
- Any format specifiers, e.g. the layout of a pattern
For each class containing a logger (optional):
- The logger class and minimum level of message that will be logged, using the levels given above plus ALL and OFF. If a class is not listed it will use the root level specified above.
A sample configuration file might look like:
# Set root logger level to INFO and its only appender to A1. log4j.rootLogger=INFO, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Specify Configuration at runtime[编辑]
Add the following parameters to the java command line when starting your program.
-Dlog4j.configuration="file:/C:/my/folder/log4j.properties"
-Dlog4j.debug
Marauroa[编辑]
Current logging in Marauroa (assorted information) is listed below. Marauroa uses a wrapper class that would allow the log4j package to be removed, meaning the wrapper package is referenced in the main code. A few exceptions are given below.
| Used in Class filename | Modifiers | Logger Type | Logger name | Class name / parameter | 
| AbstractDatabaseAdapter | private static | Logger | logger | |
| AccountDAO | private static final | marauroa.common.Logger | logger | |
| ActionHandler | private static final | marauroa.common.Logger | logger | |
| AdapterFactory | private static | Logger | logger | |
| Attributes | private static | Logger | logger | |
| BanListDAO | private static | Logger | logger | |
| CharacterDAO | private static final | marauroa.common.Logger | logger | |
| ChooseCharacterHandler | private static final | marauroa.common.Logger | logger | |
| ClientFramework | private static final | marauroa.common.Logger | logger | |
| Configuration | private static final | marauroa.common.Logger | logger | |
| ConnectionValidator | private static final | marauroa.common.Logger | logger | |
| CreateAccountHandler | private static final | marauroa.common.Logger | logger | |
| CreateCharacterHandler | private static final | marauroa.common.Logger | logger | |
| DatabaseFactory | private static final | marauroa.common.Logger | logger | |
| DBCommandQueueBackgroundThread | private static | Logger | logger | |
| DBTransaction | private static | Logger | logger | |
| Decoder | private static final | marauroa.common.Logger | logger | |
| Definition | private static final | marauroa.common.Logger | logger | |
| DelayedEventHandlerThread | private static final | marauroa.common.Logger | logger | |
| DisconnectHandler | private static final | marauroa.common.Logger | logger | |
| FloodCheck | private static final | marauroa.common.Logger | logger | |
| FloodValidator | private static final | marauroa.common.Logger | logger | |
| GameEventDAO | private static final | marauroa.common.Logger | logger | |
| GameServerManager | private static final | marauroa.common.Logger | logger | |
| H2DatabaseAdapter | private static | Logger | logger | MySQLDatabaseAdapter | 
| Hash | private static | Logger | logger | |
| JDBCSQLHelper | private static final | marauroa.common.Logger | logger | |
| KeepAliveHandler | private static final | marauroa.common.Logger | logger | |
| LinkedRPObjectList | private static final | Logger | logger | |
| LoadActiveCharacterCommand | private static | Logger | logger | |
| LoginEventDAO | private static final | marauroa.common.Logger | logger | |
| LoginRequestKeyHandler | private static final | marauroa.common.Logger | logger | |
| LoginSeedDAO | private static final | marauroa.common.Logger | logger | |
| LoginSendPromiseHandler | private static final | marauroa.common.Logger | logger | |
| LogoutHandler | private static final | marauroa.common.Logger | logger | |
| marauroad | private static final | Logger | logger | |
| marauroad | private final | Logger | log | |
| MarauroaRPZone | private static final | marauroa.common.Logger | logger | |
| MarauroaUncaughtExceptionHandler | private static | Logger | logger | |
| MessageDispatcher | private static final | marauroa.common.Logger | logger | |
| MessageFactory | private static final | marauroa.common.Logger | logger | Attributes | 
| MessageHandler | private static final | marauroa.common.Logger | logger | |
| MessageS2CCreateAccountNACK | private static | Logger | logger | |
| MessageS2CCreateCharacterNACK | private static | Logger | logger | MessageS2CCreateAccountNACK | 
| MySQLDatabaseAdapter | private static | Logger | logger | |
| NetConst | private static final | marauroa.common.Logger | logger | |
| NioServer | private static final | marauroa.common.Logger | logger | |
| OutOfSyncHandler | private static final | marauroa.common.Logger | logger | |
| PerceptionHandler | private static final | marauroa.common.Logger | logger | |
| Persistence | private final static | Logger | logger | |
| PlayerEntry | private static | Logger | logger | |
| PlayerEntry | private static | Logger | logger | SecuredLoginInfo | 
| PlayerEntryContainer | private static final | marauroa.common.Logger | logger | |
| PythonRPWorld | private static final | marauroa.common.Logger | logger | |
| RPClass | private static final | marauroa.common.Logger | logger | |
| RPEvent | private static final | marauroa.common.Logger | logger | |
| RPObject | private static final | marauroa.common.Logger | logger | |
| RPObjectDAO | private static final | marauroa.common.Logger | logger | |
| RPObjectFactory | private static final | marauroa.common.Logger | logger | |
| RPRuleProcessorImpl | private static | Logger | logger | |
| RPScheduler | private static final | marauroa.common.Logger | logger | |
| RPServerManager | private static final | marauroa.common.Logger | logger | |
| RPSlot | private static final | marauroa.common.Logger | logger | RPObject | 
| RPWorld | private static final | marauroa.common.Logger | logger | |
| RPZoneDAO | private static final | marauroa.common.Logger | logger | |
| RWLock | private static final | marauroa.common.Logger | logger | |
| SecuredLoginHandler | private static final | marauroa.common.Logger | logger | |
| SecuredLoginHandler | private static | Logger | infoLogger | ServerInfo | 
| SlotOwner | private static final | marauroa.common.Logger | logger | |
| Statistics | private static final | marauroa.common.Logger | logger | |
| StatisticsDAO | private static final | marauroa.common.Logger | logger | |
| TransactionPool | private static | Logger | logger | |
| TransferACKHandler | private static final | marauroa.common.Logger | logger | |
| UnkownMessageHandler | private static final | marauroa.common.Logger | logger | |
| UpdateScript | private static | Logger | logger | |
| Validator | private static | Logger | logger | 
Level of logging[编辑]
Fatal - none
Error - 153 matches in 62 files
Warn - 76 matches in 34 files
Info - 45 matches in 18 files
Debug - 126 matches in 31 files
Log - none (method defined in Logger class)
Direct reference to Log4j[编辑]
"import org.apache.log4j" is referred to in 4 files
NDC - 4 matches in 1 file
MDC - 4 matches in 2 files