2010-03-03 143 views
3

首先,我知道关于Clog,我不想实现这一块。原因?我们不能维护严重的日志“框架”。Silverlight:Log4Net到孤立存储

所以我的问题:

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

+0

“请不要提供我的选择” - 一个奇怪的立场! – 2010-03-03 08:06:17

+1

@Mitch:Silverlight的可靠本地存储 - 真的有隔离存储的替代品吗? – 2010-03-03 08:21:17

+0

@Peter:我指的是“只想知道是否有人将log4net安装到隔离存储器” – 2010-03-03 08:32:49

回答

1

我无法想象这是可能的。您将不得不下载log4net源代码并尝试针对silverlight运行时进行编译。我想可能会调整代码的一部分并使它成为silverlight,但这听起来像是很多艰苦的工作。你可能更适合自己的解决方案,或者使用CLog(哎呀)。

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 
} 
+6

不需要switch语句。你可以用下面的代码来替换整个东西:writer.Write(String.Format(“{0:u} [{1}] {2} {3}”,DateTime.Now,logLevel.ToString()。ToUpper(),消息,Environment.NewLine)); – 2011-02-09 00:59:34

+0

我害怕使用你的代码,因为我的应用根据有多少用户连接到它创建了多个线程,它在wp8上的web服务器实现,打开和关闭隔离存储文件可能不是每个日志调用的好主意。 – 2014-04-01 13:15:57