Logging
Chesster offers a simple logging implementation, similar to other applications. Log messages are categorized by their severity level, and can include a date, time, sender type, message and additional information.
Level | Description |
---|---|
Debug | A piece of data that can be useful to figure out what variables are in use. |
Info | An information regarding the current action of the library. |
Warn | Something that could potentially cause unexpected behaviour. |
Error | Something that went wrong, but can be handled. |
Fatal | Something that went terribly wrong, and can lead to a crash or data loss. |
Setting up
To allow logs to be displayed, you need to register a log output source. By default, Chesster can output to a file and the console.
using Chesster.Logging;
Logger.RegisterOutput<ConsoleLogOutput>();
Logger.RegisterOutput<FileLogOutput>();
Other kinds of settings can be configured via Logger.Settings
.
Property | Type | Description |
---|---|---|
IncludeDate | Boolean | Should the date be included in the log message? False by default. |
IncludeTime | Boolean | Should the time be included in the log message? True by default. |
DateFormat | String | If the date should be included, this string specifies the format. yyyy/MM/dd by default. |
TimeFormat | String | If the time should be included, this string specifies the format. HH:mm:ss by default. |
MinimumLevel | LogLevel | The minimum log level that should be logged. Lower-level messages will be ignored. Error by default. |
Logging Messages
If you are extending a part of the library, or just want a convenient logging service, you can simply call the static Logger
class, which provides various methods to easily create log messages. Logs can include a type, to allow a better understanding where log messages arose from.
// This message will include a sender type.
Logger.Debug<MyAwesomeType>("My awesome log message!");
// This message won't!
Logger.Error("Oh no, something went wrong!");
// This can be used to have more control over log message properties:
Logger.Append(new LogMessage() { ... });
// This can be used to log exceptions.
// Exceptions are automatically categorized as 'Errors' and include a stacktrace.
try { /* Some code */ }
catch (Exception e)
{
Logger.Exception(e);
}
Customization
Log Outputs
If you need to add another kind of log output (to a database for example) you simply have a type inherit the LogOutput
base class. The only thing the inheriting class is required to have, is a Log
method with a LogMessage
and a LoggerSettings
parameter.
public class MyLogOutput : LogOutput
{
public override void Log(LogMessage message, LoggerSettings settings)
{
// My awesome log code here!
}
}