Silverlight: Log4Net для изолированного хранения
Во-первых, я знаю о Clog, и я не хочу реализовывать эту часть. Причина? Мы не можем поддерживать рамки сурового каротажа.
Итак, на мой вопрос:
Можно ли реализовать log4net в приложении Silverlight? То, что я хочу достичь, - это войти в изолированное хранилище. Я знаю, доступно только 1 МБ хранилища, но этот лимит может быть увеличен (пользователь должен принять это, я тоже знаю).
Кстати, пожалуйста, не предоставляйте мне альтернативы. Я только хочу знать, если кто-то внедрил log4net в изолированное хранилище.
Ответы
Ответ 1
Я не могу себе представить, что это возможно. Вам нужно будет загрузить источник log4net и попытаться скомпилировать его во время выполнения Silverlight. Полагаю, что можно будет адаптировать части кода и сделать его встроенным в silverlight, но это звучит как тяжелая работа. Вы, вероятно, лучше откатываете свое собственное решение или используете CLog (whoops).
Ответ 2
Вот что я сделал.
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
}
Ответ 3
Теперь для Silverlight теперь доступен Блок регистрации журнала Microsoft Enterprise Library 5.0. Взгляните на Silverlight Integration Pack и соответствующий demo.