Как я могу создавать объекты печати log4js, такие как console.log

У меня есть проект с JavaScript в двух местах. Один использует node.js на стороне сервера, а другой, очевидно, является браузерным JavaScript. Мне необходимо поддерживать любой браузер, и я хотел бы иметь единую структуру ведения журнала для всех из них. Я выбрал log4js, который отлично подходит для записи строк, но для объектов возникают некоторые трудности.

В узле, когда я делаю Logger.debug(someObject);, я получаю красивую распечатку объекта. Когда я пытаюсь сделать это с помощью своего браузера JavaScript, я получаю [object Object], который бесполезен.

Кто-нибудь знает, как это сделать?

(узел использует терминал в качестве выходной консоли, а браузер JavaScript использует консоль браузера (Chrome))


person trixtur    schedule 12.02.2013    source источник
comment
Вы можете расширять объекты в консоли Chrome, если вы не регистрируете их как строки?   -  person Bergi    schedule 13.02.2013
comment
Да, но log4js, похоже, просто выполняет «toString» для объектов, которые просто выводят [object Object]   -  person trixtur    schedule 13.02.2013
comment
log4javascript уже поддерживает это, но пока не поддерживает Node.js. Следующая версия будет работать как в Node.js, так и в браузере.   -  person Tim Down    schedule 13.02.2013
comment
Тим – Я не верю, что это так. Прежде всего, я сделал npm install log4js, и он установился отлично, с той же версией и кодом от тех же авторов. Во-вторых, я прочитал javascript и не нашел способа сделать это без изменения кода, как это предлагается в принятом ответе.   -  person trixtur    schedule 13.02.2013
comment
@trixtur: log4js и log4javascript — это не одно и то же.   -  person Tim Down    schedule 15.02.2013
comment
ой извините, это я не очень внимательно читаю.   -  person trixtur    schedule 19.02.2013


Ответы (1)


log4js все еще довольно молод с точки зрения разработки. Я бы изменил исходный код вокруг строки 1795 в «doAppend».

if(typeof(loggingEvent.message) === 'object')
    return window.console.log(loggingEvent.level.levelStr + " - %o", loggingEvent.message);
person ben.payne    schedule 13.02.2013