win8 学习笔记二 输出日志
Win8 Store App的日志输出不像Desktop App 那么简单,见 这篇文档(http://www.cnblogs.com/xiaokang088/archive/2011/12/27/2303725.html)
经过同事指点加google,找到了办法。
1. 自定义EventSource,如下:
public class StoreEventSource : EventSource
{
public static StoreEventSource Instance = new StoreEventSource(); [Event(, Level = EventLevel.Verbose)]
public void Debug(string message)
{
this.WriteEvent(, message);
} [Event(, Level = EventLevel.Informational)]
public void Info(string message)
{
this.WriteEvent(, message);
} [Event(, Level = EventLevel.Warning)]
public void Warn(string message)
{
this.WriteEvent(, message);
} [Event(, Level = EventLevel.Error)]
public void Error(string message)
{
this.WriteEvent(, message);
} [Event(, Level = EventLevel.Critical)]
public void Critical(string message)
{
this.WriteEvent(, message);
}
}
关于这个EventSource,看似简单,说来话长,后面有篇文章,自行捉摸。
2. 自定义EventListenter
sealed class IsolatedStorageEventListener : EventListener
{
private StorageFile store; public IsolatedStorageEventListener(string location)
{
init(location);
} async void init(string location)
{
store = await ApplicationData.Current.LocalFolder.CreateFileAsync(location, CreationCollisionOption.ReplaceExisting);
} protected async override void OnEventWritten(EventWrittenEventArgs eventData)
{
StringBuilder builder = new StringBuilder();
builder.AppendLine(eventData.EventId.ToString());
foreach (object o in eventData.Payload)
{
builder.AppendLine(o.ToString());
}
await FileIO.AppendTextAsync(store, builder.ToString());
} public override void Dispose()
{
base.Dispose();
}
}
带没看起来都不复杂,蛮简单的,急用的同学可以直接拷贝。
注意:这里有问题:初始化文件的时候,用的是 await , 也就是说,在写日志的时候,有可能这里还没初始化完成,这个问题还没妥善解决。
3.调用
IsolatedStorageEventListener listener;
private void btnDebug_Click_1(object sender, RoutedEventArgs e)
{
if (listener == null)
{
listener = new IsolatedStorageEventListener("test.txt");
listener.EnableEvents(StoreEventSource.Instance, EventLevel.LogAlways);
}
StoreEventSource.Instance.Debug("TestTest");
}
log会写在这里:C:\Users\[username]\AppData\Local\Packages\[package name]\LocalState
[package name] 在 Package.appxmanifest\Packaging\Package name
好了,火急火燎的同学,您可以直接粘贴过去用了,貌似还 有点问题,我也在捉摸。
相关资料如下:
1. 这个EventSource 其实是用来做性能分析的,具体见下文。
Tracing with EventSource in .NET 4.5(http://dev.goshoom.net/en/2013/04/tracing-with-eventsource/)
2.关于ETW和PerView的博客,非常详细
Vance Morrison's Weblog(http://blogs.msdn.com/b/vancem/)
3.specification for EventSource , 这个很重要。
The specification for the System.Diagnostics.Tracing.EventSource class.
http://blogs.msdn.com/b/vancem/archive/2012/07/09/more-details-on-eventsource-the-class-specification.aspx
就这些了,我也是刚开始学习,不对的地方请多多指教。
win8 学习笔记二 输出日志的更多相关文章
- asp.net MVC日志插件Log4Net学习笔记二:保存日志到sqlserver的配置
1.写到sqlserver的配置: <!--保存到SQLSERVER数据库日志--> <log4net> <appender name="AdoNetAppen ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- 【Android】3.12 兴趣点( POI)搜索功能
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 POI(Point of Interest),中文可以翻译为“兴趣点”.在地理信息系统中,一个POI ...
- qsort函数以及sort函数使用方法
sort函数的使用方法 做ACM题的时候,排序是一种常常要用到的操作. 假设每次都自己写个冒泡之类的O(n^2)排序,不但程序easy超时,并且浪费宝贵的比赛时间,还非常有可能写错. STL里面 ...
- GetLastError()返回值大全
[0]-操作成功完成.[1]-功能错误.[2]-系统找不到指定的文件.[3]-系统找不到指定的路径.[4]-系统无法打开文件.[5]-拒绝访问.[6]-句柄无效.[7]-存储控制块被损坏.[8]-存储 ...
- 使用supervisor过程中的一个问题
我有一个php写的脚本需要常驻内存,于是使用supervisor进行管理,后来由于进程运行时间长了以后会出现假死的情况,所以就改成进程在无事可做的时候就退出,然后让supervisor再拉起来,起到重 ...
- J2EE的13个规范总结
转载自:http://blog.csdn.net/zhuanzhe117/article/details/38763483 什么是J2EE? 在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮 ...
- 通过google浏览器的开发者工具修改cookie值
打开一个页面F12,然后再刷新下.点到如下图位置刚可以添加或重设cookie的值.修改cookie的值时,需要注意要清除下cookie.不然修改的cookie不生效.
- js 函数参数 arguments[0]
function box() { return arguments[0] + '|' + arguments[1]; } al ...
- C语言 · 素数求和
算法提高 素数求和 时间限制:1.0s 内存限制:256.0MB 问题描述 输入一个自然数n,求小于等于n的素数之和 样例输入 2 样例输出 2 数据规模和约定 测试样例保证 2 & ...
- Linux mdev 热拔插配置
在嵌入式领域使用比较多的是用 mdev 进行热插拔的操作. 文件系统进行配置 # 首先对 /etc/fstab 进行配置 # <file system> <mount pt> ...
- Iconfont在移动端遇到问题的探讨
Iconfont越来越得到前端的关注,特别是阿里那个iconfont库的推出和不断完善,再加上连IE6都能兼容,的确是个好东西. 既然那么火,我们公司移动项目也计划加入这个iconfont,于是我就针 ...