Kestrel in ASP.NET 5 Core MVC application in Debian writes escape codes to /var/log/syslog text file like
Apr 5 22:02:21 ew kestrel-store[31907]: #033[40m#033[32minfo#033[39m#033[22m#033[49m: Microsoft.Hosting.Lifetime[0]
Apr 5 22:02:21 ew kestrel-store[31907]: Now listening on: http://localhost:5000
Apr 5 22:02:21 ew kestrel-store[31907]: #033[40m#033[32minfo#033[39m#033[22m#033[49m: Microsoft.Hosting.Lifetime[0]
Apr 5 22:02:21 ew kestrel-store[31907]: Application started. Press Ctrl+C to shut down.
Apr 5 22:02:21 ew kestrel-store[31907]: #033[40m#033[32minfo#033[39m#033[22m#033[49m: Microsoft.Hosting.Lifetime[0]
Apr 5 22:02:21 ew kestrel-store[31907]: Hosting environment: Production
Apr 5 22:02:21 ew kestrel-store[31907]: #033[40m#033[32minfo#033[39m#033[22m#033[49m: Microsoft.Hosting.Lifetime[0]
Apr 5 22:02:21 ew kestrel-store[31907]: Content root path: /var/www/store5
This file is read by MVC controller and sent to user in view.
How to convert this file to html (for example, using colored or italic lines) or remove escape codes from file so that file is easier to read ? Or how to force kestrel output plain text without escape codes ?
Controller code:
public IActionResult Syslog()
{
return new ContentResult()
{
Content = FileToStr("/var/log/syslog")
};
}
static string FileToStr(string cFileName)
{
StreamReader oReader = File.OpenText(cFileName);
string lcString = oReader.ReadToEnd();
oReader.Close();
return lcString;
}
Escape sequence is defined as:
- One \x1b
- One [
- Zero or more parameter bytes 0x30-0x3f
- Zero or more intermediate bytes 0x20-0x2f
- One final byte 0x40-0x7f
Update
Code in answer adds span to start of every line and does not remove escape sequences:
<span style="color: blue">Apr 8 00:00:05 ew rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="573" x-info="https://www.rsyslog.com"] rsyslogd was HUPed</span>
<span style="color: blue">Apr 8 00:00:05 ew systemd[1]: logrotate.service: Succeeded.</span>
<span style="color: blue">Apr 8 00:00:05 ew systemd[1]: Started Rotate log files.</span>
<span style="color: blue">Apr 8 00:00:10 ew colord[1172]: failed to get session [pid 23699]: No data available</span>
<span style="color: blue">Apr 8 00:00:12 ew colord[1172]: failed to get session [pid 23699]: No data available</span>
<span style="color: blue">Apr 8 00:00:14 ew colord[1172]: failed to get session [pid 23699]: No data available</span>
<span style="color: blue">Apr 8 00:05:01 ew CRON[23838]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)</span>
<span style="color: blue">Apr 8 00:15:01 ew CRON[24082]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)</span>
<span style="color: blue">Apr 8 00:17:01 ew CRON[24128]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)</span>
<span style="color: blue">Apr 8 00:21:49 ew kestrel-store[22413]: #033[40m#033[32minfo#033[39m#033[22m#033[49m: WebOptimizer.AssetMiddleware[1000]</span>
<span style="color: blue">Apr 8 00:21:49 ew kestrel-store[22413]: Request started for '/c/version.js'</span>
<span style="color: blue">Apr 8 00:21:49 ew kestrel-store[22413]: #033[41m#033[30mfail#033[39m#033[22m#033[49m: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]</span>
<span style="color: blue">Apr 8 00:21:49 ew kestrel-store[22413]: An unhandled exception has occurred while executing the request.</span>
Expected output is: