Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 1.94 KB

ChildProcess.md

File metadata and controls

42 lines (27 loc) · 1.94 KB

AwesomeLog > Child Processes

AwesomeLog has facilities for capturing AwesomeLog messages from child processes, clustering, and worker threads. In doing so, AwesomeLog will grab the individual messages from the dependent processes/threads and unify them into a single log stream. This allows an AwesomeLog system to have one unified Log for multiple processes/threads.

Setup

Using AwesomeLog across processes/threads require a couple of easy steps to setup:

First, initialize and start your log in your main application as per usual.

const Log = require("@awesomeeng/awesome-log");
Log.init();
Log.start();

Next, whenever you create a new process or cluster or thread, immediately after creating it call Log.captureSubProcess(process). This tells AwesomeLog to watch the process for incoming log messages.

const CP = require("child_process");

let child = CP.fork(executable);
Log.captureSubProcess(child);

Finally, in each of your child processes, you need to instantiate your own AwesomeLog instance, which is fortunately super easy:

const Log = require("@awesomeeng/awesome-log");
Log.init();
Log.start();

Now anywhere in that child process where you use Log, AwesomeLog will forward the message to the parent process.

Disabling

In some case you may want to use a separate Logging system in a Child Process. However, AwesomeLog tries to be clever whenever it sees that you are running inside a Child Process and sets itself up to use the Child Process stuff described above. Fortunately there is a quick setting for this disableSubProcesses which if set to true will force a child process to use its own AwesomeLog instance.

Child Processes and Log Levels

One important note to keep in mind: If you use custom log levels in your parent process, you must define and use the same custom log levels in your child process. If the AwesomeLog parent get a log message it doesn't understand, it will generate an error.