Я не использовал NLog в Silverlight, но новая версия 2.0 только что была выпущена в бета-версии, и ее можно использовать в Silverlight (на сайте есть несколько примеров).Я не видел изолированную цель хранения, но держу пари, что написать ее будет несложно.
Эта ссылка показывает (в ответе Кристиана) один из способов «войти» в изолированное хранилище.,Я не могу комментировать, является ли это хорошей идеей.С этой информацией вы, вероятно, могли бы написать NLog Target, который мог бы быть сконфигурирован в NLog, чтобы регистраторы NLog могли выполнять запись в изолированное хранилище.
Вот еще один пример (в ответе Криса С.) регистрации в изолированном хранилище.
Наконец, NLog 2.0 поставляется с LogReceiveService и LogReceiverServiceTarget, которые, как мне кажется, можно использовать из клиента Silverlight.Я не сделал этого, поэтому я не могу комментировать, работают ли они или как они работают.
Следуя примеру Кристиана, вы могли бы сделать что-то подобное (я не пробовал этого):
[Target("IsolatedStorage")]
public sealed class IsolatedStorageTarget : TargetWithLayout
{
public IsolatedStorageTarget()
{
}
protected override void Write(LogEventInfo logEvent)
{
try
{
using (IsolatedStorageFile store =
IsolatedStorageFile.GetUserStoreForApplication())
{
using (Stream stream = new IsolatedStorageFileStream
("Solution.Silverlight.log", FileMode.Append, FileAccess.Write, store))
{
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine(this.Layout.Render(logEvent));
}
writer.Close();
}
}
catch (Exception ex)
{
}
}
}
Некоторые вещи, которые я могу придумать, могут улучшить это:
Может быть, лучше сохранить поток и файл открытыми, пока цель жива.Возможно, это можно сделать, переопределив InitializeTarget и CloseTarget.
Может быть, было бы неплохо разрешить указывать имя файла, а не использовать жестко закодированное имя файла.
Может быть полезна некоторая обработка ошибок.По крайней мере, обнаружение, если изолированное хранилище было исчерпано и может быть изящно (или тихо).
Если вы идете по этому пути, удачи!Сообщите, успешны ли вы или нет.