voile.log
ログ取得のためのユーティリティモジュール
- struct
LogData
; -
- ulong
id
; - LogLevel
level
; - SysTime
time
; - string
file
; - uint
line
; - string
msg
; - string
moduleName
; - string
funcName
; - string
prettyFuncName
; - string
threadId
; - const nothrow @property @safe JSONValue
json
(); - nothrow @property @safe void
json
(JSONValue v); - const string
toString
();
- interface
LogStorageInput
; -
- abstract const @property LogData
front
(); - abstract const @property bool
empty
(); - abstract void
popFront
(); - abstract void
reset
();
- interface
LogStorageOutput
; -
- abstract void
put
(LogData datas); - abstract void
clear
();
- class
LogStorageInMemory
: voile.log.LogStorageInput, voile.log.LogStorageOutput; -
- const @property @safe LogData
front
(); - const @property @safe bool
empty
(); - @safe void
popFront
(); - @safe void
put
(LogData data); - pure nothrow @nogc @safe void
reset
(); - pure nothrow @nogc @safe void
clear
(); - const 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); - 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);
- inout pure nothrow @property @safe inout(LogStorageInMemory)
logStorage
(); - const pure nothrow @safe auto
slice
();
const pure nothrow @safe autoslice
(size_t begin, size_t end);
- 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
; -
- inout @property @safe inout(Regex!char)
file
();
@property @safe voidfile
(string pattern);
@property @safe voidfile
(Regex!char r); - inout @property @safe inout(Regex!char)
moduleName
();
@property @safe voidmoduleName
(string pattern);
@property @safe voidmoduleName
(Regex!char r); - inout @property @safe inout(Regex!char)
funcName
();
@property @safe voidfuncName
(string pattern);
@property @safe voidfuncName
(Regex!char r); - inout @property @safe inout(Regex!char)
prettyFuncName
();
@property @safe voidprettyFuncName
(string pattern);
@property @safe voidprettyFuncName
(Regex!char r); - inout @property @safe inout(Regex!char)
msg
();
@property @safe voidmsg
(string pattern);
@property @safe voidmsg
(Regex!char r); - inout @property @safe string
targetName
();
@property @safe voidtargetName
(string name); - const @property @safe size_t
lineMax
();
@property @safe voidlineMax
(size_t num); - const @property @safe size_t
lineMin
();
@property @safe voidlineMin
(size_t num);
@safe voidsetLineSpan
(size_t min, size_t max); - const @property @safe LogLevel
logLevel
();
@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);
shared this(Logger logger, LogLevel lv = LogLevel.all);
shared this(shared Logger logger, LogLevel lv = LogLevel.all); - @trusted void
writeLogMsg
(ref LogEntry payload);
- template
Logging
(loggerAlias...) - クラス内で使用するロガーを切り替えるためのミックスインテンプレート
- @trusted Logger
getLogger
(string name, Logger defaultLogger = cast()sharedLog); - 名前からロガーを取得する