1
4
我将登录到独立的存储,并为用户提供一种方法,让他们通过httpwebrequest使用一个简单的put/post或通过一个wcf服务(如果您觉得frisky)将日志提交回服务器。 请记住,XBAP只能获得512K的独立存储,因此您实际上可能希望自动将这些事件日志推回到服务器上。还请记住,XBAP只能与它的源服务器通信,因此接受日志文件的服务必须在同一域下运行。
下面是一些演示如何设置
更新这是一个修改过的答案,因为你对你的问题做了修改,并提供了更多的细节。
由于您提到您在桌面应用程序中使用log4net,我们可以建立在您已经习惯使用的依赖关系之上,因为在XBAP版本中也完全可以继续使用log4net。log4net不附带一个可以立即解决这个问题的实现,但是可以编写一个log4net的实现。
我看了一眼 the implementation the other answerer linked to 由JoachimKerschbaumer(所有信贷到期)提供,它看起来是一个可靠的实现。我的第一个问题是,在一个示例中,可能有人在每个事件上或者同步地重新登录到服务,但是实现实际上支持排队处理一定数量的事件,并以批处理的形式将它们发送回服务器。此外,当它确实发送到服务时,它使用 async invocation of an Action delegate 这意味着它将在线程池线程上执行,而不会阻塞UI。因此,我认为实现是非常可靠的。 以下是我将要从这里采取的步骤:
现在,Joachim的示例是以一种非常容易被人下载、运行和理解的方式编写的。如果我把它放到生产解决方案中,我肯定会改变一些事情:
|
2
0
我的方法是登录到一个远程服务,由一个唯一的用户ID或guid键控。通常的异步调用的开销不是很高。 您也可以在本地缓存消息,无论是在RAM中还是在独立的存储中——也许是在网络不可访问的情况下作为备份。 一定要在一定的时间窗口内观察重复的事件。您不希望在几秒钟内记录1000个相同异常的副本。 另外,我喜欢记录的不仅仅是错误。您还可以记录性能数据,例如执行某些函数需要多长时间(特别是进程外调用),或者记录更详细的数据,以响应用户明确进入“调试和报告”模式。检查超过某个阈值的呼叫对于捕获回归和抢占用户投诉也很有用。 |
3
0
如果您在部分信任下运行XBAP,则只允许您写入客户机上的isolatedStorage。它只有512KB,您可能希望以一种更有价值的方式使用它(而不是用于日志记录),比如存储用户的首选项。 您不允许在部分信任的情况下执行任何远程处理,因此不能使用log4net remotingpender。 最后,在部分信任的XBAP下,您拥有WebPermission to talk to the server of your app origin only . 我建议使用WCF服务, like described in this article .在我当前的项目中,我们使用类似的配置,它工作得很好。 然后,基本上,在WCF服务器端,您可以将日志记录到任何适当的位置:文件、数据库等。您还可能希望保留log4net日志记录代码,并尝试使用Internet上可用的WCF日志附加器之一。( this 或 this )。 |
Abdullah Chaudhry · json文件上的文件旋转和删除 1 年前 |
Max S · 如何从CMD读取日志的所有输出 6 年前 |
Ivan Denchev · Apache-过去一小时的日志 6 年前 |
ninja.coder · Log4j中的字符串串联性能 6 年前 |
Rich · 如何记录日志。是否与操作员一起调试? 6 年前 |