voile.log
ログ取得のためのユーティリティモジュール
- struct
LogData; -
- ulong
id; - LogLevel
level; - SysTime
time; - string
file; - uint
line; - string
msg; - string
moduleName; - string
funcName; - string
prettyFuncName; - string
threadId; - nothrow @property @safe JSONValue
json() const; - nothrow @property @safe void
json(JSONValue v); - string
toString() const;
- interface
LogStorageInput; -
- abstract @property LogData
front() const; - abstract @property bool
empty() const; - abstract void
popFront(); - abstract void
reset();
- interface
LogStorageOutput; -
- abstract void
put(LogData datas); - abstract void
clear();
- class
LogStorageInMemory: voile.log.LogStorageInput, voile.log.LogStorageOutput; -
- @property @safe LogData
front() const; - @property @safe bool
empty() const; - @safe void
popFront(); - @safe void
put(LogData data); - pure nothrow @nogc @safe void
reset(); - pure nothrow @nogc @safe void
clear(); - pure nothrow @safe LogStorageInMemory
save() const; - pure nothrow @nogc @property @safe size_t
currentIndex() const; - pure nothrow @nogc @property @safe size_t
length() const; - pure nothrow @safe LogStorageInMemory
opSlice() const;
pure nothrow @safe LogStorageInMemoryopSlice(size_t begin, size_t end) const; - pure nothrow @safe auto
slice() const;
pure nothrow @safe autoslice(size_t begin, size_t end) const; - alias
opDoller= length;
- class
LogStorageLogger: std.logger.core.Logger; -
- @safe this(LogStorageOutput logDst, LogLevel lv = LogLevel.all);
- @trusted void
writeLogMsg(ref LogEntry payload);
- class
InMemoryLogger: voile.log.LogStorageLogger; - メモリ内のロガーExamples:
import std.logger: LogLevel; auto logger = new InMemoryLogger(LogLevel.info); logger.trace("TRACETEST"); // ignore logger.info("INFOTEST"); logger.warning("WARNINGTEST"); logger.error("ERRORTEST"); auto input = logger.logStorage; assert(!input.empty); assert(input.front.id == 0); assert(input.front.msg == "INFOTEST"); input.popFront(); assert(!input.empty); assert(input.front.id == 1); assert(input.front.msg == "WARNINGTEST"); input.popFront(); assert(!input.empty); assert(input.front.id == 2); assert(input.front.msg == "ERRORTEST"); input.popFront(); assert(input.empty);
- @safe this(LogLevel lv = LogLevel.all);
- pure nothrow @property @safe inout(LogStorageInMemory)
logStorage() inout; - pure nothrow @safe auto
slice() const;
pure nothrow @safe autoslice(size_t begin, size_t end) const;
- class
TextFileLogger: std.logger.filelogger.FileLogger; - テキストファイルのロガー
- @safe this(in string fn, const LogLevel lv = LogLevel.all);
@safe this(in string fn, const LogLevel lv, CreateFolder createFileNameFolder);
@safe this(File file, const LogLevel lv = LogLevel.all); - protected @safe void
beginLogMsg(string file, int line, string funcName, string prettyFuncName, string moduleName, LogLevel logLevel, Tid threadId, SysTime timestamp, Logger logger); - protected void
logMsgPart(scope const(char)[] msg); - protected void
finishLogMsg();
- class
JsonFileLogger: std.logger.core.Logger; - JSONファイルのロガー
- @safe this(in string fn, const LogLevel lv = LogLevel.all);
@trusted this(in string fn, const LogLevel lv, CreateFolder createFileNameFolder);
@safe this(File file, const LogLevel lv = LogLevel.all); - @trusted void
writeLogMsg(ref LogEntry payload); - string
getFilename(); - static LogStorageInput
loadFromFile(string fileName);
- class
XmlFileLogger: std.logger.core.Logger; - XMLファイルのロガー
- @safe this(in string fn, const LogLevel lv = LogLevel.all);
@trusted this(in string fn, const LogLevel lv, CreateFolder createFileNameFolder);
@safe this(File file, const LogLevel lv = LogLevel.all); - @trusted void
writeLogMsg(ref LogEntry payload); - string
getFilename();
- class
CsvFileLogger: std.logger.core.Logger; - CSVファイルのロガー
- @safe this(in string fn, const LogLevel lv = LogLevel.all);
@trusted this(in string fn, const LogLevel lv, CreateFolder createFileNameFolder);
@safe this(File file, const LogLevel lv = LogLevel.all); - @trusted void
writeLogMsg(ref LogEntry payload); - string
getFilename();
- class
TsvFileLogger: std.logger.core.Logger; - TSVファイルのロガー
- @safe this(in string fn, const LogLevel lv = LogLevel.all);
@trusted this(in string fn, const LogLevel lv, CreateFolder createFileNameFolder);
@safe this(File file, const LogLevel lv = LogLevel.all); - @trusted void
writeLogMsg(ref LogEntry payload); - string
getFilename();
- class
NamedLogger: std.logger.multilogger.MultiLogger; -
- @safe Logger
getLogger(string name); - ロガーを取得する
- @safe void
insertLogger(string name, Logger l); - ロガーを追加する重複チェックをする
- class
DispatchLogger: voile.log.NamedLogger; - Examples:
auto logger = new DispatchLogger; with (logger) { insertLogger("test1", new InMemoryLogger); insertLogger("test2", new InMemoryLogger); addFilter(Filter("test1", msg: r"test\d{3}")); addFilter(Filter("test2", logLevel: LogLevel.warning)); } logger.info("test001"); // -> test1 logger.trace("aaa"); // -> drop logger.warning("xxx"); // -> test2 logger.warning("test002"); // -> test1 import std.algorithm: equal, map; assert((cast(InMemoryLogger)logger.getLogger("test1")).logStorage.map!"a.msg".equal(["test001", "test002"])); assert((cast(InMemoryLogger)logger.getLogger("test2")).logStorage.map!"a.msg".equal(["xxx"]));
- struct
Filter; -
- @property @safe inout(Regex!char)
file() inout;
@property @safe voidfile(string pattern);
@property @safe voidfile(Regex!char r); - @property @safe inout(Regex!char)
moduleName() inout;
@property @safe voidmoduleName(string pattern);
@property @safe voidmoduleName(Regex!char r); - @property @safe inout(Regex!char)
funcName() inout;
@property @safe voidfuncName(string pattern);
@property @safe voidfuncName(Regex!char r); - @property @safe inout(Regex!char)
prettyFuncName() inout;
@property @safe voidprettyFuncName(string pattern);
@property @safe voidprettyFuncName(Regex!char r); - @property @safe inout(Regex!char)
msg() inout;
@property @safe voidmsg(string pattern);
@property @safe voidmsg(Regex!char r); - @property @safe string
targetName() inout;
@property @safe voidtargetName(string name); - @property @safe size_t
lineMax() const;
@property @safe voidlineMax(size_t num); - @property @safe size_t
lineMin() const;
@property @safe voidlineMin(size_t num);
@safe voidsetLineSpan(size_t min, size_t max); - @property @safe LogLevel
logLevel() const;
@property @safe voidlogLevel(LogLevel lv); - @safe this(string targetName, string file = null, string moduleName = null, string funcName = null, string prettyFuncName = null, string msg = null, size_t lineMax = size_t.max, size_t lineMin = size_t.min, LogLevel logLevel = LogLevel.all);
- Constructor
- @safe void
addFilter(Filter filter); - @safe void
writeLogMsg(ref LogEntry payload);
- class
SynchronizedLogger: std.logger.core.Logger; - マルチスレッド同期機構を備えたLogger
- this(Logger logger, LogLevel lv = LogLevel.all);
this(shared Logger logger, LogLevel lv = LogLevel.all);
this(Logger logger, LogLevel lv = LogLevel.all) shared;
this(shared Logger logger, LogLevel lv = LogLevel.all) shared; - @trusted void
writeLogMsg(ref LogEntry payload);
- template
Logging(loggerAlias...) - クラス内で使用するロガーを切り替えるためのミックスインテンプレート
- @trusted Logger
getLogger(string name, Logger defaultLogger = cast()sharedLog); - 名前からロガーを取得する