Thread overview |
---|
October 12, 2016 vibe.d HTMLLogger | ||||
---|---|---|---|---|
| ||||
Why does FileLogger work while HTMLLogger crashes on the same thing? I've had a look at the source code, but couldn't find anything. It happens with vibe.d `0.7.30-beta1` and `0.7.29` alike (haven't tested lower versions). [Test code] auto logLine = LogLine(); logLine.level = LogLevel.info; // Fine auto l = new FileLogger("log/logger_test.log"); l.minLevel = LogLevel.info; l.beginLine(logLine); l.put("Hello!"); l.endLine(); htmlLogger = new HTMLLogger("log/logger_test.html"); htmlLogger.minLevel = LogLevel.info; // crashes here (at `beginLine`), if removed it works. htmlLogger.beginLine(logLine); htmlLogger.put("Hello!"); htmlLogger.endLine(); |
October 12, 2016 Re: vibe.d HTMLLogger | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris | On Wednesday, 12 October 2016 at 11:54:14 UTC, Chris wrote: > Why does FileLogger work while HTMLLogger crashes on the same thing? I've had a look at the source code, but couldn't find anything. It happens with vibe.d `0.7.30-beta1` and `0.7.29` alike (haven't tested lower versions). > > [Test code] > auto logLine = LogLine(); > logLine.level = LogLevel.info; > > // Fine > auto l = new FileLogger("log/logger_test.log"); > l.minLevel = LogLevel.info; > l.beginLine(logLine); > l.put("Hello!"); > l.endLine(); > > htmlLogger = new HTMLLogger("log/logger_test.html"); > htmlLogger.minLevel = LogLevel.info; > // crashes here (at `beginLine`), if removed it works. > htmlLogger.beginLine(logLine); > htmlLogger.put("Hello!"); > htmlLogger.endLine(); The answer is that `HTMLLogger` needs to be given the time in the `LogLine` struct, else it fails. The time stamp is not auto generated. I completely overlooked that. Here's the culprit: cf. m_logFile.writef(`<div class="timeStamp">%s</div>`, msg.time.toISOExtString()); https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/core/log.d#L363 |
October 12, 2016 Re: vibe.d HTMLLogger | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris | On Wednesday, 12 October 2016 at 14:19:36 UTC, Chris wrote:
>
> The answer is that `HTMLLogger` needs to be given the time in the `LogLine` struct, else it fails. The time stamp is not auto generated. I completely overlooked that.
>
> Here's the culprit:
>
> cf.
>
> m_logFile.writef(`<div class="timeStamp">%s</div>`, msg.time.toISOExtString());
>
> https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/core/log.d#L363
I wonder, if the design of HTMLLogger couldn't be improved in this respect. It's not an obvious error.
|
Copyright © 1999-2021 by the D Language Foundation