লেখাগুলিতে ক্রম পাওয়ার আউটপুট টাইমস্ট্যাম্পগুলি পাওয়ার কোনও দ্রুত উপায় আছে console.log
(যেমন ফায়ারফক্সও করে)। বা new Date().getTime()
একমাত্র বিকল্পটি প্রেন্ডিং করছে?
লেখাগুলিতে ক্রম পাওয়ার আউটপুট টাইমস্ট্যাম্পগুলি পাওয়ার কোনও দ্রুত উপায় আছে console.log
(যেমন ফায়ারফক্সও করে)। বা new Date().getTime()
একমাত্র বিকল্পটি প্রেন্ডিং করছে?
উত্তর:
ক্রোমে, বিকল্পটি রয়েছে কনসোল সেটিংস (বিকাশকারী সরঞ্জাম -> কনসোল -> সেটিংস [উপরের-ডান কোণে)) "দেখান টাইমস্ট্যাম্পস" যা আমার প্রয়োজনের মতো।
আমি সবেমাত্র এটি পেয়েছি। অন্য কোনও নোংরা হ্যাকের প্রয়োজন নেই যা বার্তাগুলি যেখান থেকে লগ ইন করা হয়েছিল সেখানে প্লেসোল্ডারদের ধ্বংস করে এবং স্থানটি মুছে দেয়।
"টাইমস্ট্যাম্পগুলি দেখান" সেটিংটি দেবটুলস ড্রয়ারের উপরের-ডান কোণে পাওয়া "দেবটুলস সেটিংস" এর প্রিফারেন্সস প্যানে সরানো হয়েছে:
এটা চেষ্টা কর:
console.logCopy = console.log.bind(console);
console.log = function(data)
{
var currentDate = '[' + new Date().toUTCString() + '] ';
this.logCopy(currentDate, data);
};
বা এটি, আপনি যদি টাইমস্ট্যাম্প চান তবে:
console.logCopy = console.log.bind(console);
console.log = function(data)
{
var timestamp = '[' + Date.now() + '] ';
this.logCopy(timestamp, data);
};
একাধিক জিনিস এবং একটি দুর্দান্ত উপায়ে
লগ করতে (যেমন গাছের গাছের উপস্থাপনা):
console.logCopy = console.log.bind(console);
console.log = function()
{
if (arguments.length)
{
var timestamp = '[' + Date.now() + '] ';
this.logCopy(timestamp, arguments);
}
};
বিন্যাস স্ট্রিং সহ ( জেএসফিডাল )
console.logCopy = console.log.bind(console);
console.log = function()
{
// Timestamp to prepend
var timestamp = new Date().toJSON();
if (arguments.length)
{
// True array copy so we can call .splice()
var args = Array.prototype.slice.call(arguments, 0);
// If there is a format string then... it must
// be a string
if (typeof arguments[0] === "string")
{
// Prepend timestamp to the (possibly format) string
args[0] = "%o: " + arguments[0];
// Insert the timestamp where it has to be
args.splice(1, 0, timestamp);
// Log the whole array
this.logCopy.apply(this, args);
}
else
{
// "Normal" log
this.logCopy(timestamp, args);
}
}
};
এর সাথে ফলাফলগুলি:
PS: কেবলমাত্র ক্রোমে পরীক্ষিত।
পিপিএস: Array.prototype.slice
এখানে নিখুঁত নয় কারণ এটি সিরিজের চেয়ে বরং অবজেক্টের অ্যারে হিসাবে লগইন হবে।
আপনি দেব সরঞ্জাম প্রোফাইলার ব্যবহার করতে পারেন।
console.time('Timer name');
//do critical time stuff
console.timeEnd('Timer name');
"টাইমার নাম" অবশ্যই একই হতে হবে। আপনি বিভিন্ন নামের সাথে টাইমার একাধিক উদাহরণ ব্যবহার করতে পারেন।
console.timeStamp('foo')
এটা ঠিক টাইমলাইনে একটি হলুদ বিন্দু হিসেবে উপস্থিত হয়। ফাঁকা জায়গাগুলির সাথে নাম ব্যবহার করার সময় এটি আমার পক্ষে কার্যকর হয়নি।
console.log
বা লগিং সম্পর্কিত কোনও প্রশ্নের উত্তর দেয় না
আমি প্রথমে এটি একটি মন্তব্য হিসাবে যুক্ত করেছি, তবে আমি একটি স্ক্রিনশট যুক্ত করতে চেয়েছিলাম কারণ কমপক্ষে একজন ব্যক্তি বিকল্পটি খুঁজে না পেয়েছিল (বা এটি কোনও কারণে তাদের নির্দিষ্ট সংস্করণে পাওয়া যায়নি)।
Chrome এ 68.0.3440.106 এ (এবং এখন 72.0.3626.121 এ চেক করা হয়েছে) আমাকে করতে হয়েছিল
আমি রূপান্তর arguments
করতে এরে ব্যবহার Array.prototype.slice
যাতে আমি যা করতে পারেন concat
অপরের সাথে এরে আমি কি যোগ করার জন্য, তারপর তা পাস চান console.log.apply(console, /*here*/)
;
var log = function () {
return console.log.apply(
console,
['['+new Date().toISOString().slice(11,-5)+']'].concat(
Array.prototype.slice.call(arguments)
)
);
};
log(['foo']); // [18:13:17] ["foo"]
দেখে মনে হচ্ছে এটিও সম্পাদনা করা arguments
যেতে পারে Array.prototype.unshift
তবে আমি জানি না যে এটির মতো এটি পরিবর্তন করা ভাল ধারণা / এর অন্যান্য পার্শ্ব প্রতিক্রিয়াও রয়েছে
var log = function () {
Array.prototype.unshift.call(
arguments,
'['+new Date().toISOString().slice(11,-5)+']'
);
return console.log.apply(console, arguments);
};
log(['foo']); // [18:13:39] ["foo"]
আপনি যদি গুগল ক্রোম ব্রাউজার ব্যবহার করেন তবে আপনি ক্রোম কনসোল এপিআই ব্যবহার করতে পারেন:
এই দুটি কলের মধ্যে অতিবাহিত সময়টি কনসোলে প্রদর্শিত হয়।
বিশদ তথ্যের জন্য, দয়া করে ডক লিঙ্কটি দেখুন: https://developers.google.com/chrome-developer-tools/docs/console
ক্রোম 68 থেকে:
"টাইমস্ট্যাম্পগুলি দেখান" সেটিংসে সরানো হয়েছে
দেখান টাইমস্ট্যাম্প কনসোল সেটিংসে কনসোল সেটিংসে পূর্বে চেকবক্সটি থেকে সরানো হয়েছে সেটিং ।
এটিও চেষ্টা করে দেখুন:
this.log = console.log.bind( console, '[' + new Date().toUTCString() + ']' );
এই ফাংশনটি অন্তর্নির্মিতের মতো টাইমস্ট্যাম্প, ফাইলের নাম এবং লাইন নম্বর রাখে console.log
।
log
তৈরি ফাংশনটি একটি নির্দিষ্ট টাইমস্ট্যাম্পকে হিমশীতল করে ; প্রতিবার আপনি আপ-টু-ডেট সময় [= আপ টু ডেট; -] চাইলে আপনাকে এটি পুনরায় চালাতে হবে। এটি একটি ফাংশন তৈরি করা সম্ভব তবে আপনাকে এটির mklog()(...)
পরিবর্তে এটি ব্যবহার করতে হবে log()
।
আপনি যদি লাইন নম্বর সম্পর্কিত তথ্য (প্রতিটি বার্তা তার .log () কলকে নির্দেশ করে, সমস্ত আমাদের র্যাপারের দিকে নির্দেশ করে না) সংরক্ষণ করতে চান তবে আপনাকে ব্যবহার করতে হবে .bind()
। আপনি এর মাধ্যমে একটি অতিরিক্ত টাইমস্ট্যাম্প যুক্তি প্রিপেন্ড করতে পারেন console.log.bind(console, <timestamp>)
তবে সমস্যাটি হ'ল একটি নতুন টাইমস্ট্যাম্পের সাথে আবদ্ধ ফাংশনটি পেতে আপনাকে প্রতিবার এটি পুনরায় চালানো দরকার। এটি করার একটি বিশ্রী উপায় হল একটি ফাংশন যা একটি সীমাবদ্ধ ফাংশন দেয়:
function logf() {
// console.log is native function, has no .bind in some browsers.
// TODO: fallback to wrapping if .bind doesn't exist...
return Function.prototype.bind.call(console.log, console, yourTimeFormat());
}
যা ডাবল কল দিয়ে ব্যবহার করতে হবে:
logf()(object, "message...")
তবে আমরা গেটর ফাংশন সহ কোনও সম্পত্তি ইনস্টল করে প্রথম কলটিকে অন্তর্ভুক্ত করতে পারি :
var origLog = console.log;
// TODO: fallbacks if no `defineProperty`...
Object.defineProperty(console, "log", {
get: function () {
return Function.prototype.bind.call(origLog, console, yourTimeFormat());
}
});
এখন আপনি কেবল কল করেছেন console.log(...)
এবং স্বয়ংক্রিয়ভাবে এটি একটি টাইমস্ট্যাম্প সংশোধন করে!
> console.log(12)
71.919s 12 VM232:2
undefined
> console.log(12)
72.866s 12 VM233:2
undefined
এমনকি আপনি একটি সহজ সঙ্গে এই ঐন্দ্রজালিক আচরণ অর্জন করতে পারেন log()
পরিবর্তে console.log()
করে Object.defineProperty(window, "log", ...)
।
সামঞ্জস্যতা ফলব্যাক সহ, একটি ভালভাবে সম্পন্ন নিরাপদ কনসোল মোড়কের জন্য https://github.com/pimterry/loglevel দেখুন .bind()
।
লিগ্যাসি API থেকে সামঞ্জস্যতা ফালব্যাকগুলির জন্য https://github.com/eligrey/Xccessors দেখুন । যদি কোনও সম্পত্তি এপিআই কাজ করে না, আপনি একটি মোড়ক ফাংশনে ফ্যালব্যাক করুন যা প্রতিবার একটি নতুন টাইমস্ট্যাম্প পায়। (এই ক্ষেত্রে আপনি লাইন নম্বর তথ্য হারাবেন, তবে টাইমস্ট্যাম্পগুলি এখনও প্রদর্শিত হবে))defineProperty()
__defineGetter__
বয়লারপ্লেট: সময় পছন্দ করে format
var timestampMs = ((window.performance && window.performance.now) ?
function() { return window.performance.now(); } :
function() { return new Date().getTime(); });
function formatDuration(ms) { return (ms / 1000).toFixed(3) + "s"; }
var t0 = timestampMs();
function yourTimeFormat() { return formatDuration(timestampMs() - t0); }
এটি this
আপনি যতটা আর্গুমেন্ট ব্যবহার করে স্থানীয় সুযোগে (ব্যবহার করে ) একটি "লগ" ফাংশন যুক্ত করে :
this.log = function() {
var args = [];
args.push('[' + new Date().toUTCString() + '] ');
//now add all the other arguments that were passed in:
for (var _i = 0, _len = arguments.length; _i < _len; _i++) {
arg = arguments[_i];
args.push(arg);
}
//pass it all into the "real" log function
window.console.log.apply(window.console, args);
}
সুতরাং আপনি এটি ব্যবহার করতে পারেন:
this.log({test: 'log'}, 'monkey', 42);
এরকম কিছু আউটপুট দেয়:
[সোমবার, 11 মার্চ 2013 16:47:49 GMT] অবজেক্ট {পরীক্ষা: "লগ"} বানর 42
খুব সুন্দর বাড়ানো সমাধান "ফরম্যাট স্ট্রিং সঙ্গে" JSmyth থেকে এছাড়াও সমর্থন
console.log
বৈচিত্র ( log
, debug
, info
, warn
, error
)09:05:11.518
বনাম।2018-06-13T09:05:11.518Z
)console
সহ ক্ষেত্রে বা এর ক্রিয়াকলাপগুলি ব্রাউজারগুলিতে বিদ্যমান নয়।
var Utl = {
consoleFallback : function() {
if (console == undefined) {
console = {
log : function() {},
debug : function() {},
info : function() {},
warn : function() {},
error : function() {}
};
}
if (console.debug == undefined) { // IE workaround
console.debug = function() {
console.info( 'DEBUG: ', arguments );
}
}
},
/** based on timestamp logging: from: https://stackoverflow.com/a/13278323/1915920 */
consoleWithTimestamps : function( getDateFunc = function(){ return new Date().toJSON() } ) {
console.logCopy = console.log.bind(console)
console.log = function() {
var timestamp = getDateFunc()
if (arguments.length) {
var args = Array.prototype.slice.call(arguments, 0)
if (typeof arguments[0] === "string") {
args[0] = "%o: " + arguments[0]
args.splice(1, 0, timestamp)
this.logCopy.apply(this, args)
} else this.logCopy(timestamp, args)
}
}
console.debugCopy = console.debug.bind(console)
console.debug = function() {
var timestamp = getDateFunc()
if (arguments.length) {
var args = Array.prototype.slice.call(arguments, 0)
if (typeof arguments[0] === "string") {
args[0] = "%o: " + arguments[0]
args.splice(1, 0, timestamp)
this.debugCopy.apply(this, args)
} else this.debugCopy(timestamp, args)
}
}
console.infoCopy = console.info.bind(console)
console.info = function() {
var timestamp = getDateFunc()
if (arguments.length) {
var args = Array.prototype.slice.call(arguments, 0)
if (typeof arguments[0] === "string") {
args[0] = "%o: " + arguments[0]
args.splice(1, 0, timestamp)
this.infoCopy.apply(this, args)
} else this.infoCopy(timestamp, args)
}
}
console.warnCopy = console.warn.bind(console)
console.warn = function() {
var timestamp = getDateFunc()
if (arguments.length) {
var args = Array.prototype.slice.call(arguments, 0)
if (typeof arguments[0] === "string") {
args[0] = "%o: " + arguments[0]
args.splice(1, 0, timestamp)
this.warnCopy.apply(this, args)
} else this.warnCopy(timestamp, args)
}
}
console.errorCopy = console.error.bind(console)
console.error = function() {
var timestamp = getDateFunc()
if (arguments.length) {
var args = Array.prototype.slice.call(arguments, 0)
if (typeof arguments[0] === "string") {
args[0] = "%o: " + arguments[0]
args.splice(1, 0, timestamp)
this.errorCopy.apply(this, args)
} else this.errorCopy(timestamp, args)
}
}
}
} // Utl
Utl.consoleFallback()
//Utl.consoleWithTimestamps() // defaults to e.g. '2018-06-13T09:05:11.518Z'
Utl.consoleWithTimestamps( function(){ return new Date().toJSON().replace( /^.+T(.+)Z.*$/, '$1' ) } ) // e.g. '09:05:11.518'
Utl.js
উপরে । সুতরাং- Utl.consoleWithTimestamps(...)
ওভারাইডের অন-ডিমান্ড কমেন্টে / ইন-আউট করা সার্থক হতে পারে
আমার বেশিরভাগ নোড.জেএস অ্যাপ্লিকেশনগুলিতে এটি রয়েছে। এটি ব্রাউজারেও কাজ করে।
function log() {
const now = new Date();
const currentDate = `[${now.toISOString()}]: `;
const args = Array.from(arguments);
args.unshift(currentDate);
console.log.apply(console, args);
}
ES6 সমাধান:
const timestamp = () => `[${new Date().toUTCString()}]`
const log = (...args) => console.log(timestamp(), ...args)
যেখানে timestamp()
রিটার্নগুলি আসলে টাইমস্ট্যাম্প ফর্ম্যাট করে এবং log
একটি টাইমস্ট্যাম্প যুক্ত করে এবং এতে নিজস্ব আর্গুমেন্ট প্রচার করেconsole.log
জেএসমিথের উত্তর সম্পর্কে একটি পরিমার্জন:
console.logCopy = console.log.bind(console);
console.log = function()
{
if (arguments.length)
{
var timestamp = new Date().toJSON(); // The easiest way I found to get milliseconds in the timestamp
var args = arguments;
args[0] = timestamp + ' > ' + arguments[0];
this.logCopy.apply(this, args);
}
};
এই:
.log
console.log(document, window)
বিন্যাসের স্ট্রিং অনুমান ব্যতীত, তবে আপনি স্মেথ পেতে চাইছেন তা ব্যতীত good পছন্দ 2014-02-15T20:02:17.284Z > [object HTMLDocument] Window {…}
পরিবর্তে document
একটি বিস্তারযোগ্য বস্তুর গাছ হিসাবে প্রতিনিধিত্ব করা হচ্ছে।