log

chrome styled 日志

牧云@^-^@ 提交于 2020-11-24 05:31:39
在Java里面有众多日志工具,其实在JavaScript里面也可以有。那么怎么自定义一些样式呢? 在chrome中可以这样: console.log('%cABCDEFG', 'color: red;font-weight:bold;font-size:20px;') 结果: 来源: oschina 链接: https://my.oschina.net/u/574527/blog/117645

企业开发-log4j 最新版本2使用简介

扶醉桌前 提交于 2020-05-04 12:36:15
1、官网http://logging.apache.org/log4j/2.x/index.html 2、SLF4J目前已经是业界标准,完整兼容和实现 3、如何兼容版本1?log4j-1.2-api-2.4.1.jar这个包,但是还是有一些接口是变化了,个人看了下都是些不常用的接口变了,如果你用到请修改源代码。参考官方 http://logging.apache.org/log4j/2.x/manual/migration.html 4、多个 SLF4J实现不能共存,共存需要解决一些冲突问题 5、log4j-slf4j-impl和log4j-to-slf4j不能共存,从名称就能看出一个是log4j对SLF4J的实现,一个是反过来。一起会报错 6、新特征:支持异步日志更强大。因为公司需要分布式日志,所以是用scala actor写的,当时也有测试使用Disruptor,效率极高,没想到就出来了,哈哈。 7、新的语法 logger.debug("Logging in user %s with birthday %s", user.getName(), user.getBirthdayCalendar()); logger.debug("Logging in user %1$s with birthday %2$tm %2$te,%2$tY", user.getName(), user

Git 基础

谁说我不能喝 提交于 2020-04-15 14:07:50
【推荐阅读】微服务还能火多久?>>> git log 有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。 一个常用的选项是 -p ,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交: $ git log -p -2 ##貌似有时候后面-2参数不用写,或者不起效果 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile 该选项除了显示基本信息之外,还在附带了每次 commit 的变化。 当进行代码审查,或者快速浏览某个搭档提交的 commit 所带来的变化的时候,这个参数就非常有用了。 你也可以为 git log 附带一系列的总结性选项。 比如说,如果你想看到每次提交的简略的统计信息,你可以使用 --stat 选项: $ git log --stat commit

tomcat源码阅读之日志记录器(Logger)

允我心安 提交于 2020-04-08 13:46:25
UML图: 1、Logger接口中定义了日志的级别:FATAL、ERROR、WARNING、INFORMATION、DEBUG,通过接口函数getVerbosity获取日志级别,setVerbosity设置日志级别; 2、接口中提供一组重载的log方法来记录日志,在LoggerBase实现类中除了log(String msg)方法没有实现外,其他重载的log方法均实现为调用这个方法来实现日志的记录; 3、在LoggerBase类中,默认的日志级别是ERROR;带日志级别参数的log方法在记录日志时,如果参数的日志级别的数字比该日志记录器实例中设定的等级低,才会记录该消息,否则,会忽略该条记录。代码如下: 4、FileLogger日志记录器为将日志输出到文件中;SystemErrLogger和SystemOutLogger均为在控制台上输出日志,区别只是一个输出错误信息日志,一个输出正常日志信息,代码如下: FileLogger的实现: 1、日志文件默认记录到logs文件夹下,扩展名默认为.log,并且文件名带有日期前缀,在每次记录日志时,会拿系统当前日期和日志记录日期做比较,如果不相同则关闭当前日志文件并重新创建新的日志文件,代码如下: 可以看到在日期发生改变时,更新date变量,并调用open方法创建新的日志文件; 2、open方法首先检查要创建的日志文件所在的目录是否存在

vue生命周期

妖精的绣舞 提交于 2020-04-08 11:53:28
1.beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。 2.created 实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。 3.beforeMount 在挂载开始之前被调用:相关的 render 函数首次被调用。 4.mounted el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。 5.beforeUpdate 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。 6.updated 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。 当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。 然而在大多数情况下, 你应该避免在此期间更改状态,因为这可能会导致更新无限循环。 该钩子在服务器端渲染期间不被调用。 7.beforeDestroy 实例销毁之前调用。在这一步,实例仍然完全可用。 8

node04

為{幸葍}努か 提交于 2020-04-08 04:51:42
1、模板引擎 用于渲染页面 介绍jade或ejs jade:侵入式,与原生html/css不共存,使用缩进代表层级 模板后缀.jade ejs:则非侵入式的 2、jade 1)简单使用: //代码 const jade = require('jade') let str=jade.renderFile('./template/a.jade') console.log(str)//模板 //模板部分 html head style script body div ul li li li div 2)语法:根据缩进,确定层级 在jade模板内书写属性,例如为script标签新增src属性 script(src="a.js") div(style="width:200px;height:150px") 上述内容也可以使用json表示,但只有style标签允许 同理,class可以使用数组进行表示 div(class=['a','b']) div(style={"width:200px;height:150px"}) 若有多个属性需要设置,则使用逗号分隔: link(href="a.css",rel="stylesheet") 将文件写入到新文件中: const jade = require('jade') const fs=require('fs') let str=jade

apply-call-bind

怎甘沉沦 提交于 2020-04-07 21:48:54
call: var foo ={ value:1 } function bar(name,age) { console.log(this.value); console.log(name); console.log(age); } //bar.call(foo,'gongtao',11); Function.prototype.call2 = function (context) { var args = []; for (var i = 1, len = arguments.length; i < len; i++) { args.push(arguments[i]); } context.fn = this; context.fn(...args); delete context.fn; } bar.call2(foo,'gongtao',111); apply: var foo = { value: 1 } function bar(name, age) { console.log(this.value); console.log(name); console.log(age); } //bar.apply(foo); Function.prototype.apply2 = function (context, arr) { var context = context ||

,Event

ε祈祈猫儿з 提交于 2020-04-07 20:37:57
var target = event.target || event.srcElement; console.log(target.tagName); //div 首先说EventEvent 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行! 一般开发中使用Event事件状态时都会利用形参的方式,这样就会带来一个问题,这个兼容浏览器问题应该怎样被解决,利用以下代码作为处理 // 在IE8及以下的浏览器中,是将事件作为window对象的属性保存的 e = e || window.event; 检测现在使用什么事件类型 Event.type:可以检测现在使用什么事件类型click还是其他 点击事件触发了盒子div console.log(event.type);//click Event中的this Event.target:指向触发了的元素很像this 在IE里面使用Event.srcElement Event.targettagName:tagName 属性返回元素的标签名。HTML 返回 tagName 属性的值是大写的。 点击了带有百度链接的a标签,使用以下方法不会跳转 清除事件的默认行为 a.onclick = function(){return false;}

js学习总结(4)

只愿长相守 提交于 2020-04-07 11:31:05
本篇主要介绍Math对象的常用方法 1.Math.abs(值),将值转换为绝对值。比如: console.log(Math.abs(-567)); 打印返回值为567 2.Math.ceil(值),将值向上四舍五入。比如: console.log(Math.ceil(5.666)); 打印返回值为6 3.Math.floor(值),将值向下四舍五入。比如: console.log(Math.ceil(5.666)); 打印返回值为5 4.Math.random(),随机生成0-1范围内的小数。比如: console.log(Math.random()); 打印返回值为随机0-1范围内小数,比如0.6973378142792437 5.Math.round(值),将值四舍五入成最接近的整数。比如: console.log(Math.round(5.666)); 打印返回值为6 来源: https://www.cnblogs.com/woywan/p/12651989.html

谈谈神秘的ES6——(四)解构赋值【数组篇】

柔情痞子 提交于 2020-04-07 10:56:33
今天,我们来讲一个新的概念,叫做解构赋值。那么在ES6中,什么是解构赋值呢?我们先来给它下个定义。 在ES6中,允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。满足解构赋值的前提是:1.等号两边结构一样;2.声明和赋值不能分开;3.右边是具体的“东西”。 在ES5的时候,我们想要对a,b,c三个变量赋值,一般来说都是var三个变量,写三行赋值。有了解构,它可以变成这个样子: let [a,b,c] = [1,2,3] console.log(a);//1 console.log(b);//2 console.log(c);//3 当然,以下的写法也是允许的: let [[arr],str] = [["arr"],"str"]; let [ , , third] = ["foo", "bar", "baz"]; console.log(third) // "baz" let [x, , y] = [1, 2, 3]; console.log(x) // 1 console.log(y) // 3 let [head, ...tail] = [1, 2, 3, 4]; console.log(head) // 1 console.log(tail) // [2, 3, 4] 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同