Microsoft Access友好的Serilog接收器

时间:2019-03-10 00:28:46

标签: c# serilog

我正在使用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#。 谢谢 -埃德

1 个答案:

答案 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作为自定义接收器的基础。