Easy to use logging tool that allows different logging types as well as logging to different files.
Obviously, logging to files will only work on platforms allowing that to begin with (cpp, neko, php as this is using haxe's own sys.io.File).
Easylog does work on other platforms as well - only file operations are disabled, then.
Using easylog is - you might have guessed - easy.
All that needs to be done is to create your instance of the Logger (it's not a singleton!) and log away.
import easylog.EasyLogger;
var myLogger : EasyLogger = new EasyLogger("app_[logType].log");
myLogger.log(EasyLogger.Error, "Uh oh!");
myLogger.log("CustomLogType", "Custom log types are allowed, too!");
Log messages will print the date, the class, function and line they were called at - and of course the message itself.
The format is the following:
[YYYY-MM-DD HH:MM:SS] ClassName.FunctionName:LineNumber - LogType
Lines of the message
Preceded by " " for readability
Example:
[2016-05-13 11:45:33] MyClass.main:36 - Error
The logged message
Another line
EasyLog will log to either one, multiple or no files, depending on how you called the Logger constructor.
All the file paths/names given to the constructor are considered relative to the working directory.
When you log to one file, all the logs, no matter what type, will appear in that file - of course marked with their type to be able to distinguish them. All you need to do for this is giving a simple file name to the constructor.
var myLogger : EasyLogger = new EasyLogger("../../logs/MyLog.log");
When you log to multiple files, each log type will be written to its own file. To enable this functionality, you must pass a file name to the Logger constructor containing [logType]
.
// This will create log files named MyLog_Error.log, MyLog_Warning.log, etc.
var myLogger : EasyLogger = new EasyLogger("../../logs/MyLog_[logType].log");
Note that the full name of the type will be placed in the fill name. Thus, be careful about using spaces and special characters here.
If you do not want to log to any files, just pass an empty string to the constructor.
// No file will be written to - make sure to enable console output if you want any output at all
var myLogger : EasyLogger = new EasyLogger("");
By default, easylog will always append to already existing logs.
You can prevent that - instead creating a new log file with each application start - by setting:
myLogger.append = false;
Note that this must be set before the first log is written.
Printing logs to console can be enabled/disabled at any time by:
myLogger.consoleOutput = true; // or false
By default, console output is disabled.
Writing to the same log file from multiple threads is not safe - it might lead to mixed up logs.
Writing to one log per thread should be safe.
Writing to the console from multiple threads is not safe - it might lead to mixed up logs.
It is MIT! So... enjoy ;)