Я не использовал NLog в Silverlight, но новая версия, 2.0, только что был выпущен в бета-версии и она может использоваться в Silverlight (есть некоторые примеры на веб-сайте). Я не видел изолированную цель хранения, но я уверен, что нетрудно написать ее.
This link shows (в ответе Кристиана) один способ «войти» в изолированное хранилище. Я не могу прокомментировать, является ли это хорошей идеей. С этой информацией вы, вероятно, могли бы написать NLog Target, который можно было бы настроить в NLog, чтобы регистраторы NLog могли писать в изолированное хранилище.
Here is another example (в ответ Chris S) регистрации в изолированном хранилище.
Наконец, NLog 2.0 поставляется с LogReceiveService и LogReceiverServiceTarget, которые, как я думаю, могут использоваться с клиентом Silverlight. Я не сделал этого, поэтому я не могу комментировать, работают ли они или как они работают.
Going примером христианина, вы могли сделать что-то вроде этого (я не пробовал):
[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.
Возможно, было бы неплохо разрешить имя файла указываться, а не использовать жестко заданное имя файла.
Возможно, некорректная обработка ошибок. По крайней мере, обнаружив, что изолированное хранилище было исчерпано и возможно изящно (или тихо).
Если вы идете по этому маршруту, удачи! Сообщите о том, успешны вы или нет.