我正在使用SEQ,文件和JSON作为Serilog接收器
public class CustomersDatabase implements Serializable {
private ArrayList<Customer> customers = new ArrayList<Customer>();
//etc..
public void load() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("CustomersObject.txt"));
try {
customers.clear();
while(true) {
customers.add((Customer)in.readObject());
}
} catch (ClassNotFoundException e) {
System.out.println("Customer class in file wasn't found");
}
in.close();
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
} catch (IOException e) {
System.out.println("\n^ Customer load successful\n");
}
public void save() {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("CustomersObject.txt",false));
for (int i=0;i<customers.size();i++) {
out.writeObject(customers.get(i));
}
out.close();
System.out.println("\nCustomer save successful\n");
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO exception ");
e.printStackTrace();
}
}
SEQ对我来说是因为它看起来真的很有用。 我可能会取消使用JSON ...我正在尝试编写一个可以导入到Access中的文件。关键是我需要我的非开发人员朋友才能查看日志,而Access是我认为他可以用来轻松过滤客户ID等项目的工具。 Serilog除其名称外还接收其他信息。有人可以建议一种机制,以沉陷到可以导入到Access的内容中,或者提供一种用户友好的工具可以准备好的沉陷器吗?
我目前正在使用NLog和GamutLogViewer,这真棒,因为它可以根据正则表达式为条目着色!
任何建议都将受到欢迎。我的想法是我的朋友不查看调试日志。他将查看日志中包含的“信息”。
这在Windows的控制台应用程序上使用C#。 谢谢 -埃德
答案 0 :(得分:2)
Serilog有一个名为Serilog.Sinks.NLog
的接收器,它可以使Serilog通过现有的NLog基础结构来写入事件,这意味着您可以在整个应用程序中有效地使用Serilog,但是可以输出NLog格式的日志文件, GamutLogViewer(或选择YALV!)。
我可以想到的另一种方法是使用接收器Serilog.Sinks.MSSqlServer
,将日志写入SQL Server表(如果您不希望,甚至可以是用户计算机上的SQL Server Express实例)。具有共享的SQL Server),然后使用Microsoft Access通过Access中的linked tables查询这些日志。
例如,最终,您可以开发自己的接收器,该接收器直接写入.csv
文件,甚至直接写入Access .accdb
文件。开发用于Serilog的接收器非常简单,您可以使用tons of examples作为自定义接收器的基础。