diff --git a/src/client/client-constants.ts b/src/client/client-constants.ts index 07a01bad36..036650e397 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 net from "net"; import * as path from "path"; /** @@ -43,6 +45,8 @@ 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); const pythonServerPort = { dev: Promise.resolve(8765), @@ -54,6 +58,7 @@ export const Constants = { isAsar, root, urls, + logsFolder, pythonServerPort, version: packageConfig.version, }; diff --git a/src/client/logger/logger-proxy.ts b/src/client/logger/logger-proxy.ts index 840f600799..95d04073b8 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); @@ -29,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 6364a99f18..ed39c6b1f3 100644 --- a/src/client/python-process/python-rpc-server-process.ts +++ b/src/client/python-process/python-rpc-server-process.ts @@ -1,13 +1,15 @@ 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"; -import { logger } from "../logger"; +import { logger, pythonLogger } from "../logger"; 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; @@ -21,6 +23,16 @@ export class PythonRpcServerProcess { return this._getCommandLine().then((data) => { logger.info("Python path is", data.cmd, { args: data.args }); const child = this._spawedProcess = spawn(data.cmd, [...data.args]); + 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!");