Silverlight:Log4Net到隔离存储

时间:2010-03-03 08:01:24

标签: silverlight log4net isolatedstorage

首先,我了解Clog,我不想实施这篇文章。原因?我们无法维持严格的伐木“框架”。

所以我的问题:

是否可以在Silverlight应用程序中实现log4net?我想要实现的是登录Isolated Storage。我知道,只有1 MB的存储可用,但这个限制可以增加(用户必须接受这个,我也知道)。 顺便说一句,请不要提供替代方案。我只想知道是否有人将 log4net实现为隔离存储

3 个答案:

答案 0 :(得分:3)

这就是我所做的......

using System.IO.IsolatedStorage;
using System.IO;

namespace Solution.Silverlight.Classes
{
    public static class Logging
    {
        public static void Log(string message, LOGLEVEL logLevel)
        {
            try
            {
                using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (Stream stream = new IsolatedStorageFileStream("Solution.Silverlight.log", FileMode.Append, FileAccess.Write, store))
                    {
                        StreamWriter writer = new StreamWriter(stream);
                        switch (logLevel)
                        {
                            case LOGLEVEL.INFO:
                                writer.Write(String.Format("{0:u} [INFO] {1}{2}", DateTime.Now, message,Environment.NewLine));
                                break;
                            case LOGLEVEL.WARNING:
                                writer.Write(String.Format("{0:u} [WARNING] {1}{2}", DateTime.Now, message, Environment.NewLine));
                                break;
                            case LOGLEVEL.ERROR:
                                writer.Write(String.Format("{0:u} [ERROR] {1}{2}", DateTime.Now, message, Environment.NewLine));
                                break;
                            case LOGLEVEL.FATAL:
                                writer.Write(String.Format("{0:u} [FATAL] {1}{2}", DateTime.Now, message, Environment.NewLine));
                                break;
                            default:
                                break;
                        }
                        writer.Close();
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
    }
}


public enum LOGLEVEL
{
    INFO,
    WARNING,
    ERROR,
    FATAL
}

答案 1 :(得分:1)

我无法想象这是可能的。您必须下载log4net源并尝试针对silverlight运行时进行编译。我想有可能适应部分代码并使其在Silverlight中构建,但这听起来像是一项艰苦的工作。你可能最好还是使用自己的解决方案,或者使用CLog(哎呀)。

答案 2 :(得分:0)

Microsoft Enterprise Library 5.0的日志记录应用程序块现在可用于Silverlight。请查看Silverlight Integration Pack和相应的demo