3

まず、 Clogについて知っていますが、この部分を実装したくありません。理由?厳しいロギング「フレームワーク」を維持することはできません。

だから私の質問に:

Silverlightアプリケーションにlog4netを実装することは可能ですか?私が達成したいのは、分離ストレージへのロギングです。使用可能なストレージは1MBしかないことはわかっていますが、この制限を増やすことができます(ユーザーはこれを受け入れる必要があります、私も知っています)。ちなみに、私に代替案を提供しないでください。誰かがlog4netを分離ストレージに実装したかどうかだけを知りたいです。

4

3 に答える 3

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
}
于 2010-03-07T09:04:31.590 に答える
1

それが可能だとは想像できません。log4net ソースをダウンロードして、Silverlight ランタイムに対してコンパイルする必要があります。コードの一部を変更して Silverlight でビルドすることは可能かもしれませんが、それは大変な作業のように思えます。おそらく、独自のソリューションを展開するか、CLog (おっと) を使用する方がよいでしょう。

于 2010-03-03T15:55:54.570 に答える
0

Microsoft Enterprise Library 5.0のLogging Application Blockが Silverlight で利用できるようになりました。Silverlight Integration Packと対応するデモをご覧ください。

于 2011-04-09T18:02:44.077 に答える