3

我正在开发这个仍处于测试阶段的应用程序,所以我设置了一个日志系统。日志太长,无法在mailtourl 中使用,所以我考虑缩小文本然后解密。假设我有一个 50 行长的日志,这应该可以帮助我做这样的事情zef16z1e6f8,然后有一个程序来使用它来找出所有 50 行日志。我想指出,我不需要任何花哨的 TripleDES 加密或其他东西。

4

1 回答 1

1

首先,我建议重新审视一下为什么不能只邮寄整个日志内容?除非您有大型日志(> 5MB),否则我建议您只邮寄日志。如果您仍想采取一些收缩策略,我会考虑两种。

如果您想要一个简单的参考字符串,可用于在稍后阶段查找您的日志数据,您可以将某种标识符与数据相关联(例如,Eugene 建议的 GUID)。这样做的好处是具有恒定的长度,而与日志大小无关。

或者,您可以只压缩日志,这会稍微缩小数据(如 Dan 所说,最多压缩 90%)。然而,这具有可变长度的缺点,并且对于非常大的日志可能仍然超出您的大小限制。如果你走这条路,你可以做这样的事情(未经测试):

private string GetCompressedString()
{
    byte[] byteArray = Encoding.UTF8.GetBytes("Some long log string");
    using (var ms = new MemoryStream())
    {
        using (var gz = new GZipStream(ms, CompressionMode.Compress, true))
        {
            ms.Write(byteArray, 0, byteArray.Length);
        }

        ms.Position = 0;

        var compressedBytes = new byte[ms.Length];
        ms.Read(compressedBytes, 0, compressedBytes.Length);

        return Convert.ToBase64String(compressedBytes);
    }
}
于 2013-06-14T07:06:51.110 回答