HTML5/websockets/javascript на основе реального времени просмотра журнала?
Im ищет эквивалент "tail -f", который запускается в браузере с помощью html5 или javascript.
Для решения потребуется код на стороне клиента, написанный в HTML5/websockets/javascript и серверном приложении на стороне сервера. Я ищу один в С#, но я готов переписать его с php или python.
Это единственное, что я видел, который близок, это
http://commavee.com/2007/04/13/ajax-logfile-tailer-viewer/
Однако современные браузеры имеют WebSockets, что делает проблему намного проще.
http://www.websocket.org/echo.html
В идеале, я хотел бы иметь некоторые возможности BareTail
http://www.baremetalsoft.com/baretail/
Такие, как цветовое кодирование строк, сортировка и многофайловая табуляция.
У меня есть аналогичная публикация, где кто-то ищет файлы журналов на основе окон
https://stackoverflow.com/info/113121/best-tail-log-file-visualization-freeware-tool
У кого-нибудь есть предложения?
Ответы
Ответ 1
В то время как я желаю, чтобы у него была лучшая защита объекта JSON для живых хвостов и исторических журналов, следующий JS-клиент работает и поддерживает также требования к серверной стороне:
https://github.com/logentries/le_js/wiki/API
<html lang="en">
<head>
<title>Your page</title>
<script src="/js/le.min.js"></script>
<script>
// Set up le.js
LE.init('YOUR-LOG-TOKEN');
</script>
</head>
.....
<script>
// log something
LE.log("Hello, logger!");
</script>
Лично, чтобы получить вышеприведенный код для работы, мне пришлось добавить следующую строку кода чуть выше LE.init('YOUR-LOG-TOKEN')
:
window.LEENDPOINT = 'js.logentries.com/v1'
.. В качестве альтернативы, Loggly также может быть подходящим: https://www.loggly.com/docs/javascript/
Ответ 2
Это не совсем так, как хвост, но функция живых журналов https://log4sure.com позволяет вам отслеживать ваши журналы на стороне клиента в реальном времени. Вам нужно будет настроить и сделать журналы соответствующим образом, как вы это делали бы для хвоста, но вы можете увидеть все журналы с дополнительной информацией о вашем клиенте, пример браузера, os, страны и т.д. Вы также можете создавать свои собственные журналы для записи материала, Оформить демоверсию на сайте, чтобы получить лучшую идею.
Установочный код очень прост, и лучшая часть - бесплатная.
// set up
var _logServer;
(function() {
var ls = document.createElement('script');
ls.type = 'text/javascript';
ls.async = true;
ls.src = 'https://log4sure.com/ScriptsExt/log4sure-0.1.min.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ls, s);
ls.onload = function() {
// use your token here.
_logServer = new LogServer("use-your-token-here");
};
})();
// example for logging text
_logServer.logText("your log message goes here.")
// example for logging error
divide = function(numerator, divisor) {
try {
if (parseFloat(value) && parseFloat(divisor)) {
throw new TypeError("Invalid input", "myfile.js", 12, {
value: value,
divisor: divisor
});
} else {
if (divisor == 0) {
throw new RangeError("Divide by 0", "myfile.js", 15, {
value: value,
divisor: divisor
});
}
}
} catch (e) {
_logServer.logError(e.name, e.message, e.stack);
}
}
// another use of logError in window.onerror
// must be careful with window.onerror as you might be overwriting some one else window.onerror functionality
// also someone else can overwrite window.onerror.
window.onerror = function(msg, url, line, column, err) {
// may want to check if url belongs to your javascript file
var data = {
url: url,
line: line,
column: column,
}
_logServer.logError(err.name, err.message, err.stack, data);
};
//example for custom logs
var foo = "some variable value";
var bar = "another variable value";
var flag = "false";
var temp = "yet another variable value";
_logServer.log(foo, bar, flag, temp);