我有一个silverlight项目,我正在尝试配置NLog来调用静态方法,但它没有(使用Nlog.config)。 我正在关注this example。 这是Nlog.config代码:
...
<targets>
<target name="m" xsi:type="MethodCall"
className="NLogTestSilver.MainPage, NLogTestSilver"
methodName="LogMethod">
<parameter layout="${level}" />
<parameter layout="${message}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="m" />
</rules>
...
程序集名称= NLogTestSilver.dll
这是MainPage.xaml.cs代码:
namespace NLogTestSilver
{
public partial class MainPage : UserControl
{
public static Logger Logger = LogManager.GetCurrentClassLogger();
public MainPage()
{
InitializeComponent();
Logger.Fatal("Fatality");
}
public static void LogMethod(string level, string message)
{
System.Windows.Browser.HtmlPage.Window.Alert(level + " " + message);
}
}
}
P.S。程序化配置效果很好。
答案 0 :(得分:3)
因此,在处理 className 参数时,发现在 NLog.Targets.MethodCallTarget.InitializeTarget ()方法中抛出异常。
如果我们改变
className="NLogTestSilver.MainPage, NLogTestSilver"
到
className="NLogTestSilver.MainPage, NLogTestSilver,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx"
效果很好。
其中 xxxxxxxxxxxxxxxx 是我们汇编的公钥令牌。