发表于: 2017-10-01 23:58:20
1 767
一 今天完成的事情:
1任务21查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。
(1)log4j 2
log4j是用来生成日志的一个框架。
导入log4j的core和api的jar包。
src下创建配置文件log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="off">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</appenders>
<loggers>
<root level="error">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
创建测试类Test
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test {
private static Logger logger = LogManager.getLogger(Test.class.getName());
public boolean hello() {
logger.trace("~~trace!!");
logger.error("error!!");
logger.info("我是info信息");
logger.debug("我是debug信息");
logger.warn("我是warn信息");
logger.fatal("我是fatal信息");
logger.log(Level.DEBUG, "我是debug信息");
return false;
}
public static void main(String[] args) {
Test t = new Test();
t.hello();
}
}
输出结果:
23:41:35.903 [main] ERROR Test - error!!
23:41:35.904 [main] FATAL Test - 我是fatal信息
如果更改level,则是根据更改的级别输出对应级别包含的信息。
例如,改为trace,则全部输出。
各级别的定义(int):
trace(600): 追踪
debug(500): 调试
info(400): 重要的信息
warn(300): 警告提示
error(200): 错误信息
fatal(100): 致命错误!
(2)抓虫!进入debug模式,单步调试,可以看到各种属性信息
F5进入方法内部
F6跳过方法
F7从方法中跳出
F8执行到断点
二 明天计划的事情:
22 解决本地连接到服务器的问题
三 遇到的问题:
1远程桌面连接失败:你的凭据不工作。。
尝试了百度到的
(1)修改HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control ->Terminal Server -> Wds -> dpwd -> Tds cp
HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> TerminalServer -> WinStations -> RDP-Tcp
(2)gpedit.msc->计算机配置->管理模板->系统->凭据分配->允许分配保存的凭据用于仅NTLM服务器身份验证->选择“已启用”->单击“显示”输入“TERMSRV/*”->运行命令“gpupdate /force”
(3)进入“控制面板”->“凭据管理器”->“添加Windows凭据”->输入Windows2008 Server的ip地址、用户、密码
都不行。。。。
四 收获:
1 log4j 2 的基本使用和坑
配置文件名限定使用log4j2.xml,log4j2-test.xml
否则报错:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.
23:30:42.183 [main] ERROR Test - Did it again!
23:30:42.184 [main] FATAL Test - 我是fatal信息
2 标签
1)根元素configuration包含两个子元素:appenders和loggers
2)appenders元素:输出源
Console:
<!--控制台输出信息-->
<Console name="Console" target="SYSTEM_OUT">
<!--只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!--输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console>
File:
<!--输出到文件中,append=“true”表示续写(默认),false覆盖-->
<File name="log" fileName="log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
RollingFile:
<!-将日志按size大小自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="50MB"/>
</RollingFile>
3)loggers元素:配置类的输出方式,引入appender元素
<!--建立一个默认的root的logger,以Console方式输出,以RollingFile方式写入文件-->
<root level="trace">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</root>
<!--Hello类:trace以上输出,additivity=false时,不会再继承root,避免再输出一次-->
<logger name="cn.lsw.base.log4j2.Hello" level="trace" additivity="false">
<appender-ref ref="Console"/>
</logger>
注意点:loggers ref的是appender的name~~
评论