Silverlight: Log4Net для изолированного хранилища - PullRequest
3 голосов
/ 03 марта 2010

Во-первых, я знаю о Clog , и я не хочу реализовывать этот кусок. Причина? Мы не можем поддерживать "каркасы" строгого ведения журнала.

Итак, на мой вопрос:

Возможно ли реализовать log4net в приложении Silverlight? Чего я хочу добиться, так это войти в изолированное хранилище . Я знаю, что доступно только 1 МБ памяти, но это ограничение можно увеличить (пользователь должен принять это, я тоже знаю). Кстати, пожалуйста, не предоставляйте мне альтернативы. Я только хочу знать, внедрил ли кто-нибудь log4net в изолированное хранилище .

Ответы [ 3 ]

3 голосов
/ 07 марта 2010

Вот что я сделал ..

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 голос
/ 03 марта 2010

Я не могу себе представить, что это возможно. Вам нужно будет загрузить исходный код log4net и попытаться скомпилировать его для среды выполнения Silverlight. Я полагаю, что есть возможность адаптировать части кода и сделать его встроенным в silverlight, но это звучит как тяжелая работа. Возможно, вам лучше использовать собственное решение или использовать CLog (упс).

0 голосов
/ 09 апреля 2011

Блок приложения для ведения журналов Microsoft Enterprise Library 5.0 теперь доступен для Silverlight. Взгляните на Silverlight Integration Pack и соответствующую демонстрационную версию .

...