v86/src/log.js

130 lines
2.5 KiB
JavaScript
Raw Normal View History

2015-01-09 00:10:40 +01:00
"use strict";
2016-02-05 15:28:57 +01:00
var log_data = [];
function do_the_log(message)
{
if(LOG_TO_FILE)
{
2017-03-10 18:45:49 +01:00
log_data.push(message, "\n");
2016-02-05 15:28:57 +01:00
}
else
{
console.log(message);
}
}
2015-09-12 01:10:38 +02:00
/**
2015-01-09 00:10:40 +01:00
* @type {function((string|number), number=)}
2015-09-12 01:10:38 +02:00
* @const
2015-01-09 00:10:40 +01:00
*/
var dbg_log = (function()
{
2017-03-04 22:02:25 +01:00
if(!DEBUG)
{
return function() {};
}
2015-09-15 21:58:40 +02:00
/** @const @type {Object.<number, string>} */
2015-01-09 00:10:40 +01:00
var dbg_names = LOG_NAMES.reduce(function(a, x)
{
a[x[0]] = x[1];
return a;
}, {});
var log_last_message = "";
var log_message_repetitions = 0;
2015-09-12 01:10:38 +02:00
/**
2015-01-09 00:10:40 +01:00
* @param {number=} level
*/
function dbg_log_(stuff, level)
{
if(!DEBUG) return;
level = level || 1;
if(level & LOG_LEVEL)
{
var level_name = dbg_names[level] || "",
2015-01-12 18:50:15 +01:00
message = "[" + v86util.pads(level_name, 4) + "] " + stuff;
2015-01-09 00:10:40 +01:00
if(message === log_last_message)
{
log_message_repetitions++;
if(log_message_repetitions < 2048)
{
return;
}
}
var now = new Date();
2015-09-12 01:10:38 +02:00
var time_str = v86util.pad0(now.getHours(), 2) + ":" +
v86util.pad0(now.getMinutes(), 2) + ":" +
2016-02-05 15:28:57 +01:00
v86util.pad0(now.getSeconds(), 2) + "+" +
v86util.pad0(now.getMilliseconds(), 3) + " ";
2015-01-09 00:10:40 +01:00
if(log_message_repetitions)
{
if(log_message_repetitions === 1)
{
2016-02-05 15:28:57 +01:00
do_the_log(time_str + log_last_message);
2015-01-09 00:10:40 +01:00
}
2015-09-12 01:10:38 +02:00
else
2015-01-09 00:10:40 +01:00
{
2016-02-05 15:28:57 +01:00
do_the_log("Previous message repeated " + log_message_repetitions + " times");
2015-01-09 00:10:40 +01:00
}
log_message_repetitions = 0;
}
2016-02-05 15:28:57 +01:00
do_the_log(time_str + message);
2015-01-09 00:10:40 +01:00
log_last_message = message;
}
}
return dbg_log_;
})();
2015-09-12 01:10:38 +02:00
/**
2015-01-09 00:10:40 +01:00
* @param {number=} level
*/
function dbg_trace(level)
{
if(!DEBUG) return;
2021-01-01 02:14:33 +01:00
dbg_log(Error().stack, level);
2015-01-09 00:10:40 +01:00
}
2015-09-12 01:10:38 +02:00
/**
2015-01-09 00:10:40 +01:00
* console.assert is fucking slow
* @param {string=} msg
* @param {number=} level
*/
2015-09-12 01:10:38 +02:00
function dbg_assert(cond, msg, level)
{
2015-01-09 00:10:40 +01:00
if(!DEBUG) return;
2015-09-12 01:10:38 +02:00
if(!cond)
{
2017-03-04 22:02:25 +01:00
dbg_assert_failed(msg);
2015-09-12 01:10:38 +02:00
}
}
2015-01-09 00:10:40 +01:00
2017-03-04 22:02:25 +01:00
function dbg_assert_failed(msg)
{
debugger;
console.trace();
if(msg)
{
throw "Assert failed: " + msg;
}
else
{
throw "Assert failed";
}
}