<div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr"><div>> 1)What is pattern_db_global_init, 'patterndb = pattern_db_new()', 'pattern_db_reload_ruleset', 'pattern_db_set_emit_func' doing in the following case ?</div><div><br></div><div>I am afraid there is no one can give you better understanding about these than yourself. <a href="https://blog.codinghorror.com/learn-to-read-the-source-luke/">Read the source, Luke!</a><br></div><div><br></div><div>> 2)Can I make two independent instances of syslog-ng engines?</div><div><br></div><div>Engine can mean a lot of things. With much of oversimplification, here is my understanding of syslog-ng. The syslog-ng message handling is built around a directed (acyclic) graph, where the nodes are from class LogPipe. Pipes without incoming arcs are called sources. Pipes without outgoing arcs are the destinations. Other nodes might be filters or parsers.</div></div><div dir="ltr"><br></div><div>None of them can stand on their own. Some of them needs a worker thread in order to work, like sources and destinations. Filters and parsers do not own a worker thread, they are executed by some source thread they are connected to (determined by the graph). You can have any number of LogPipes in a single application. If you need worker threads, syslog-ng can provide them too: see mainloop.h, mainloop-worker.h. Single instance of MainLoop can provide you any number of worker threads. Or you can use your own eventloop solution.<br></div><div dir="ltr"><div><br></div><div>> 3)How can I call two instances of syslog-ng engines independently from my Go code?</div><div><br></div><div>I am not familiar with go, but there must be some eventoop library for it. Or you can try to use MainLoop. Or if all fails, there must be a fork() system call exposed in go.<br></div><div><br></div></div></div></div></div>