From 58b74a9f3728dbcf323385b4db3ecee705bb73f4 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 7 Sep 2017 21:54:33 -0700 Subject: [PATCH 1/3] Log python to file --- src/client/client-constants.ts | 5 +++++ src/client/logger/logger-proxy.ts | 6 +----- .../python-process/python-rpc-server-process.ts | 11 +++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/client/client-constants.ts b/src/client/client-constants.ts index 2e379fd96f..b18c4bb6a9 100644 --- a/src/client/client-constants.ts +++ b/src/client/client-constants.ts @@ -1,3 +1,5 @@ +import { app } from "electron"; +import * as mkdirp from "mkdirp"; import * as path from "path"; /** @@ -25,11 +27,14 @@ const urls = { }; const isAsar = process.mainModule.filename.indexOf("app.asar") !== -1; +const logsFolder = isAsar ? path.join(app.getPath("userData"), "logs") : path.join(root, "logs"); +mkdirp.sync(logsFolder); // tslint:disable-next-line:variable-name export const Constants = { isAsar, root, urls, + logsFolder, version: packageConfig.version, }; diff --git a/src/client/logger/logger-proxy.ts b/src/client/logger/logger-proxy.ts index 840f600799..ff2191aa3f 100644 --- a/src/client/logger/logger-proxy.ts +++ b/src/client/logger/logger-proxy.ts @@ -1,14 +1,10 @@ import * as bunyan from "bunyan"; -import { app } from "electron"; -import * as mkdirp from "mkdirp"; import * as path from "path"; import { Constants } from "../client-constants"; import { PrettyStream } from "./pretty-stream"; -const logsFolder = Constants.isAsar ? path.join(app.getPath("userData"), "logs") : path.join(Constants.root, "logs"); - -mkdirp.sync(logsFolder); +const logsFolder = Constants.logsFolder; const stream = new PrettyStream(); stream.pipe(process.stderr); diff --git a/src/client/python-process/python-rpc-server-process.ts b/src/client/python-process/python-rpc-server-process.ts index b768ec193a..6430dc1b2e 100644 --- a/src/client/python-process/python-rpc-server-process.ts +++ b/src/client/python-process/python-rpc-server-process.ts @@ -1,4 +1,6 @@ import { ChildProcess, spawn } from "child_process"; +import * as fs from "fs"; +import * as net from "net"; import * as path from "path"; import { Constants } from "../client-constants"; @@ -7,6 +9,7 @@ import { getPythonPath } from "./python-executable"; const asarPath = path.join(Constants.root, "../python-rpc/main"); const localPath = path.join(Constants.root, "python/main.py"); +const logsFolder = Constants.logsFolder; export class PythonRpcServerProcess { private _spawedProcess: ChildProcess; @@ -19,7 +22,10 @@ export class PythonRpcServerProcess { this._askForKill = false; return this._getCommandLine().then((data) => { logger.info("Python path is", data.cmd, { args: data.args }); + const logStream = this._createLogFileStream(); const child = this._spawedProcess = spawn(data.cmd, [...data.args]); + child.stdout.pipe(logStream); + child.stderr.pipe(logStream); child.on("exit", (code) => { if (this._askForKill) { logger.info("Python rpc server has stopped!"); @@ -56,4 +62,9 @@ export class PythonRpcServerProcess { }); } } + + private _createLogFileStream(): fs.WriteStream { + console.log("Open python server logs", path.join(logsFolder, "python-server.log")); + return fs.createWriteStream(path.join(logsFolder, "python-server.log"), { flags: "a" }); + } } From 0decbb7c80e1cff5716550ebc191b747f3384b4b Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 7 Sep 2017 21:54:45 -0700 Subject: [PATCH 2/3] remove console.log --- src/client/python-process/python-rpc-server-process.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/client/python-process/python-rpc-server-process.ts b/src/client/python-process/python-rpc-server-process.ts index 6430dc1b2e..4ea8f4aec8 100644 --- a/src/client/python-process/python-rpc-server-process.ts +++ b/src/client/python-process/python-rpc-server-process.ts @@ -64,7 +64,6 @@ export class PythonRpcServerProcess { } private _createLogFileStream(): fs.WriteStream { - console.log("Open python server logs", path.join(logsFolder, "python-server.log")); return fs.createWriteStream(path.join(logsFolder, "python-server.log"), { flags: "a" }); } } From fc154992075fc91a3a20196e678af4cc778f39e8 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 8 Sep 2017 10:03:25 -0700 Subject: [PATCH 3/3] Update log mechanism --- src/client/logger/logger-proxy.ts | 16 ++++++++++++++++ .../python-rpc-server-process.ts | 19 +++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/client/logger/logger-proxy.ts b/src/client/logger/logger-proxy.ts index ff2191aa3f..95d04073b8 100644 --- a/src/client/logger/logger-proxy.ts +++ b/src/client/logger/logger-proxy.ts @@ -25,6 +25,22 @@ export const logger = bunyan.createLogger({ ], }); +export const pythonLogger = bunyan.createLogger({ + name: "BatchLabs Python", + level: "debug", + streams: [ + { + stream: stream as any, + }, + { + type: "rotating-file", + path: path.join(logsFolder, "python-server.log"), + period: "1d", // daily rotation + count: 3, // keep 3 back copies + }, + ], +}); + export const renderLogger = bunyan.createLogger({ name: "BatchLabs Renderer", level: "debug", diff --git a/src/client/python-process/python-rpc-server-process.ts b/src/client/python-process/python-rpc-server-process.ts index a9f8698c55..ed39c6b1f3 100644 --- a/src/client/python-process/python-rpc-server-process.ts +++ b/src/client/python-process/python-rpc-server-process.ts @@ -4,7 +4,7 @@ import * as net from "net"; import * as path from "path"; import { Constants } from "../client-constants"; -import { logger } from "../logger"; +import { logger, pythonLogger } from "../logger"; import { getPythonPath } from "./python-executable"; const asarPath = path.join(Constants.root, "../python-rpc/main"); @@ -22,10 +22,17 @@ export class PythonRpcServerProcess { this._askForKill = false; return this._getCommandLine().then((data) => { logger.info("Python path is", data.cmd, { args: data.args }); - const logStream = this._createLogFileStream(); const child = this._spawedProcess = spawn(data.cmd, [...data.args]); - child.stdout.pipe(logStream); - child.stderr.pipe(logStream); + pythonLogger.info("========================= STARTING PYTHON RPC SERVER PROCESS ========================="); + + child.stdout.on("data", (data) => { + pythonLogger.info(data); + }); + + child.stderr.on("data", (data) => { + pythonLogger.error(data); + }); + child.on("exit", (code) => { if (this._askForKill) { logger.info("Python rpc server has stopped!"); @@ -68,8 +75,4 @@ export class PythonRpcServerProcess { }); } - - private _createLogFileStream(): fs.WriteStream { - return fs.createWriteStream(path.join(logsFolder, "python-server.log"), { flags: "a" }); - } }