2015-07-13 20 views
5

Tôi hiện đang xây dựng một ứng dụng trong Electron hiện đang sử dụng iojs 2.3.1 và những gì tôi muốn làm là xuất mọi thứ và mọi thứ in ra bảng điều khiển công cụ dành cho dev.iojs/electron - Đầu ra tất cả trong giao diện điều khiển để tập tin

Trong các phiên bản trước của nút này được sử dụng để có sẵn bằng đường ống từ stdout/stderr, điều này không còn khả thi và tôi không thể tìm được giải pháp hoạt động và không liên quan đến việc thay đổi số lượng lớn của mã.

Có ai có giải pháp làm việc cho việc này không? Cảm ơn!

Trả lời

9

Kết quả cuối cùng đã được sử dụng Winston với một sự thay đổi nhanh chóng để làm cho nó hoạt động với Electr trên. https://github.com/dustinblackman/winston

EDIT:

Như câu trả lời này vẫn đang được xem, giải pháp này là tốt hơn. https://github.com/dustinblackman/winston-electron

+0

Bạn có thể giải thích chi tiết về những thay đổi bạn phải thực hiện để làm việc này không? –

+1

Có thể tìm thấy các thay đổi tại đây. https://github.com/dustinblackman/winston/commit/6564d7cb8f2403f43a14c8e0ffd2a18058cea195 Về cơ bản, nó kiểm tra xem phiên bản điện tử có tồn tại trong 'process.version' hay không. Nếu có, nó sử dụng các phương thức 'console' của electron, nếu không nó sẽ viết thành' stdout' hoặc 'stderr'. Bản vá khá đơn giản. – Dustin

+0

Bạn cũng có thể xác định winston trong quá trình chính và sử dụng nó từ trình kết xuất thông qua các đối tượng được chia sẻ –

3

Bạn có thể tạo tùy chỉnh giao diện điều khiển như vậy:

var output = fs.createWriteStream('./stdout.log'); 
var errorOutput = fs.createWriteStream('./stderr.log'); 
// custom simple logger 
var logger = new Console(output, errorOutput); 
// use it like console 
var count = 5; 
logger.log('count: %d', count); 
// in stdout.log: count 5 

Xem https://iojs.org/api/console.html#console_new_console_stdout_stderr


Rõ ràng trường hợp ngoại lệ không in ra các bản ghi lỗi, đây là một cách giải quyết:

process.on('uncaughtException', function (err) { 
    logger.error('Caught exception: ' + err); 
}); 
+0

Thật tuyệt vời! Và còn ngoại lệ thì sao? Nó được sử dụng nhiều nhất trên các máy người dùng khác, nơi tôi không thể tạo lại vấn đề. Đó là lý do tại sao mọi thứ. – Dustin

+0

@Dustin Tôi chỉ chơi đùa với nó và dường như không giống như vậy. Có lẽ ̶t̶h̶e̶r̶e̶'̶s̶ một cách giải quyết thông qua ̶p̶r̶o̶c̶e̶s̶s̶.̶o̶n̶ (̶'̶u̶n̶c̶a̶u̶g̶h̶t̶E̶x̶c̶e̶p̶t̶i̶o̶n̶'̶) ̶? ̶ sẽ chơi với nó một số ̶m̶o̶r̶e̶.̶ Có một workaround. Xem chỉnh sửa –

Các vấn đề liên quan