私は、これはちょうどこのようconsole.log
またはconsole.error
をオーバーライドを経由して行うことができると思う:
また
var log = require("electron-log");
console.log = function (message) {
log.info(message);
}
console.error = function (message) {
log.error(message);
}
、古い機能を維持および/または後で使用するために、アレイ内のすべてのメッセージを保存したい場合、あなたは以下の機能を使用することができます。
var log = require("electron-log"), msgInfo = [], msgErr = [];
// Preserve the old, built-in functions
console.log_old = console.log;
console.error_old = console.error;
console.log = function (message) {
msgInfo.push(message);
log.info(message);
}
console.error = function (message) {
msgErr.push(message);
log.error(message);
}
あなたがメインのプロセスのために、あなたはすでに述べたcodeは、いくつかの調整で動作するはず、ブラウザウィンドウでこれらの機能を使用することができます。
// https://stackoverflow.com/a/9624028, written by "kevin"
var logs = [],
hook_stream = function(_stream, fn) {
// Reference default write method
var old_write = _stream.write;
// _stream now write with our shiny function
_stream.write = fn;
return function() {
// reset to the default write method
_stream.write = old_write;
};
},
// hook up standard output
unhook_stdout = hook_stream(process.stdout, function(string, encoding, fd) {
logs.push(string);
}),
// require electron-log
log = require("electron-log");
// goes to our custom write method
console.log('foo');
console.log('bar');
unhook_stdout();
console.log('Not hooked anymore.');
// Now do what you want with logs stored by the hook
logs.forEach(function(_log) {
// Either log the contents of the message array...
//console.log('logged: ' + _log);
// ...or use electron-log to actually log them.
log.info(_log);
});
NodeJSがストリームをstdout
に作成するため、このコードはメインプロセスで機能します。レンダラープロセスでは、エレクトロンはストリームを作成せず、Chromiumにすべてのメッセージをデベロッパーコンソールに記録させるため、上記の関数を使用する必要があります。
このソリューションに欠けているものは、情報を印刷した行番号に関する情報が失われています。これはnode.jsでこのリンクで可能でした:https://stackoverflow.com/a/9624028/2091948 – vishal
これは正しいですが、私はBrowserWindowの 'console.log'がストリームを作成するとは思わないので('メインプロセスの 'console.log'は' stdout'を使っています)、これがどのように実装されるのかわかりません... –
私は参照してください。どのようにして主なプロセスから電子になる可能性があるのか、あなたは示唆を持っていますか? BrowserWindowの 'console.log'は、レンダラープロセスを意味します。 – vishal