如何将转义码转换为 html 或删除

问题描述

Debian 中 ASP.NET 5 Core MVC 应用程序中的 Kestrel 将转义码写入 /var/log/syslog 文本文件,如

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

这个文件被MVC控制器读取并发送给用户视图。

如何将此文件转换为 html(例如,使用彩色或斜体行)或从文件中删除转义码以使文件更易于阅读? 或者如何强制 kestrel 输出没有转义码的纯文本?

控制器代码:

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;
}

转义序列定义为:

  1. 一个\x1b
  2. 一个[
  3. 零个或多个参数字节 0x30-0x3f
  4. 零个或多个中间字节 0x20-0x2f
  5. 最后一个字节 0x40-0x7f

更新

答案中的代码将跨度添加到每一行的开头,并且不会删除转义序列:

<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>

预期输出为:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)