当前位置: 首页 > news >正文

上海网站建设的公司网站开启伪静态需要编写什么代码

上海网站建设的公司,网站开启伪静态需要编写什么代码,怎么用域名进网站,公司注册邮箱怎么注册文章目录 JUL日志JUL日志讲解Properties配置文件编写日志配置文件Lombok快速开启日志Mybatis日志系统 JUL日志 如果使用System.out.println来打印信息,项目中存在大量的控制台输出语句,会显得很凌乱,而且日志的粒度是不够细的,假…

文章目录

  • JUL日志
    • JUL日志讲解
    • Properties配置文件
    • 编写日志配置文件
    • Lombok快速开启日志
    • Mybatis日志系统

JUL日志

如果使用System.out.println来打印信息,项目中存在大量的控制台输出语句,会显得很凌乱,而且日志的粒度是不够细的,假如我们现在希望,项目只在debug的情况下打印某些日志,而在实际运行时不打印日志,采用直接输出的方式就很难实现了,因此我们需要使用日志框架来规范化日志输出。

而JDK为我们提供了一个自带的日志框架,位于java.util.logging包下,我们可以使用此框架来实现日志的规范化打印,使用起来非常简单:

// 首先获取日志打印器
Logger logger = Logger.getLogger(Main.class.getName());
// 调用info来输出一个普通的信息,直接填写字符串即可
logger.info("我是普通的日志");

JUL日志讲解

日志分为7个级别,详细信息我们可以在Level类中查看:

  • SEVERE(最高值)- 一般用于代表严重错误
  • WARNING - 一般用于表示某些警告,但是不足以判断为错误
  • INFO (默认级别) - 常规消息
  • CONFIG
  • FINE
  • FINER
  • FINEST(最低值)

通过info方法直接输出的结果就是使用的默认级别的日志

打印时输出日志级别:

logger.log(Level.SEVERE, "严重的错误", new IOException("我就是错误"));
logger.log(Level.WARNING, "警告的内容");
logger.log(Level.INFO, "普通的信息");
logger.log(Level.CONFIG, "级别低于普通信息");

设置配置修改日志的打印级别:

public static void main(String[] args) {Logger logger = Logger.getLogger(Main.class.getName());//修改日志级别logger.setLevel(Level.CONFIG);//不使用父日志处理器logger.setUseParentHandlers(false);//使用自定义日志处理器//默认为console处理ConsoleHandler handler = new ConsoleHandler();handler.setLevel(Level.CONFIG);logger.addHandler(handler);logger.log(Level.SEVERE, "严重的错误", new IOException("我就是错误"));logger.log(Level.WARNING, "警告的内容");logger.log(Level.INFO, "普通的信息");logger.log(Level.CONFIG, "级别低于普通信息");
}

日志处理器不仅仅只有控制台打印,也可以使用文件处理器来处理日志信息:

//添加输出到本地文件
FileHandler fileHandler = new FileHandler("test.log");
fileHandler.setLevel(Level.WARNING);
logger.addHandler(fileHandler);

控制台处理器就默认使用的是SimpleFormatter,而文件处理器则是使用的XMLFormatter,可以自定义:

//使用自定义日志处理器(控制台)
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel(Level.CONFIG);
handler.setFormatter(new XMLFormatter());
logger.addHandler(handler);

直接配置为想要的打印格式:

public class TestFormatter extends Formatter {@Overridepublic String format(LogRecord record) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");String time = format.format(new Date(record.getMillis()));  //格式化日志时间return time + " : " + record.getMessage() + "\n";}
}
public static void main(String[] args) throws IOException {Logger logger = Logger.getLogger(Main.class.getName());logger.setUseParentHandlers(false);//为了让颜色变回普通的颜色,通过代码块在初始化时将输出流设定为System.outConsoleHandler handler = new ConsoleHandler(){{setOutputStream(System.out);}};//创建匿名内部类实现自定义的格式handler.setFormatter(new Formatter() {@Overridepublic String format(LogRecord record) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");String time = format.format(new Date(record.getMillis()));  //格式化日志时间String level = record.getLevel().getName();  // 获取日志级别名称// String level = record.getLevel().getLocalizedName();   // 获取本地化名称(语言跟随系统)String thread = String.format("%10s", Thread.currentThread().getName());  //线程名称(做了格式化处理,留出10格空间)long threadID = record.getThreadID();   //线程IDString className = String.format("%-20s", record.getSourceClassName());  //发送日志的类名String msg = record.getMessage();   //日志消息//\033[33m作为颜色代码,30~37都有对应的颜色,38是没有颜色,IDEA能显示,但是某些地方可能不支持return "\033[38m" + time + "  \033[33m" + level + " \033[35m" + threadID+ "\033[38m --- [" + thread + "] \033[36m" + className + "\033[38m : " + msg + "\n";}});logger.addHandler(handler);logger.info("我是测试消息1...");logger.log(Level.INFO, "我是测试消息2...");logger.log(Level.WARNING, "我是测试消息3...");
}

不希望某些日志信息被输出,配置过滤规则:

public static void main(String[] args) throws IOException {Logger logger = Logger.getLogger(Main.class.getName());//自定义过滤规则logger.setFilter(record -> !record.getMessage().contains("普通"));//为ture才输出logger.log(Level.SEVERE, "严重的错误", new IOException("我就是错误"));logger.log(Level.WARNING, "警告的内容");logger.log(Level.INFO, "普通的信息");
}

Properties配置文件

Properties文件是Java的一种配置文件:

name=Test
desc=Description

加载Properties配置文件:

public static void main(String[] args) throws IOException {Properties properties = new Properties();properties.load(new FileInputStream("test.properties"));System.out.println(properties);
}

Properties本质上就是一个Map一样的结构,它会把所有的配置项映射为一个Map,这样我们就可以快速地读取对应配置的值了。

将已经存在的Properties对象放入输出流进行保存:

public static void main(String[] args) throws IOException {Properties properties = new Properties();// properties.setProperty("test", "lbwnb");  //和put效果一样properties.put("test", "lbwnb");properties.store(System.out, "????");//第二个参数设置评论注释//properties.storeToXML(System.out, "????");  保存为XML格式
}

通过System.getProperties()获取系统的参数

编写日志配置文件

配置文件来规定日志打印器的一些默认值:

# RootLogger 的默认处理器为
handlers= java.util.logging.ConsoleHandler
# RootLogger 的默认的日志级别
.level= CONFIG
# 修改ConsoleHandler的默认配置
# 指定默认日志级别
java.util.logging.ConsoleHandler.level = ALL
# 指定默认日志消息格式
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 指定默认的字符集
java.util.logging.ConsoleHandler.encoding = UTF-8

使用配置文件来进行配置:

public static void main(String[] args) throws IOException {//获取日志管理器LogManager manager = LogManager.getLogManager();//读取我们自己的配置文件manager.readConfiguration(new FileInputStream("logging.properties"));//再获取日志打印器Logger logger = Logger.getLogger(Main.class.getName());logger.log(Level.CONFIG, "我是一条日志信息");   //通过自定义配置文件,我们发现默认级别不再是INFO了
}

Lombok快速开启日志

添加一个@Log注解,可以直接使用一个静态变量log,而它就是自动生成的Logger

@Log(topic = "name") //手动指定名称
public class Main {public static void main(String[] args) {System.out.println("自动生成的Logger名称:"+log.getName());log.info("我是日志信息");}
}

Mybatis日志系统

开启Mybatis的日志系统,来监控所有的数据库操作

配置开启日志系统:

<setting name="logImpl" value="STDOUT_LOGGING" />

logImpl包括很多种配置项,包括 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,而默认情况下是未配置,也就是说不打印。

设定为STDOUT_LOGGING表示直接使用标准输出将日志信息打印到控制台;JDK_LOGGING表示使用JUL进行日志打印

Mybatis的日志级别都比较低,需要设置一下logging.properties默认的日志级别

handlers= java.util.logging.ConsoleHandler
.level= ALL
java.util.logging.ConsoleHandler.level = ALL
http://www.yayakq.cn/news/7426/

相关文章:

  • 做有趣的网站大学生app开发经费预算表
  • 邢台经济开发区网站平果信息网
  • 效果图网站发帖平台东南亚营销型网站建设与网络推广
  • 做司法亲子鉴定网站我想代理一个产品
  • 可以搜索国外网站的搜索引擎微信开发者平台api
  • 设计师兼职网站我要登录百度
  • 天博网站建设wordpress菜单出不来
  • 邯郸做网站熊掌号wordpress 菜单栏
  • 网站设计专业知识技能做一个网站的价钱
  • 灰色行业做网站国家高新技术企业查询网站
  • 宠物网站建设总结网站服务器年线太长
  • 域名备案以后怎么建设网站做电商需要学什么
  • VPS如何做镜像网站网站设计的风格有哪些
  • 教育局两学一做网站服务器外面打不开网站
  • 企业自己怎么制作网站首页做推广的软件有哪些
  • 成都新线加网站建设做灯笼手工简单做法
  • 微型网站 源码手机网站建站公司有哪些
  • 教学网站在线自测功能怎么做网站的功能和特色
  • 自己做网站的意义网页制作和网站建设的区别
  • 做学校网站素材海洋优质的网站建设
  • 品牌营销型网站作用专业建设网站开发
  • 做资料分享网站有哪些天津怎样做网站推广
  • 建筑设计软件免费石家庄整站优化技术
  • 免费做会计试题网站陕西手机网站建站
  • 梅州市住房和建设局网站asp.net网站制作步骤
  • 网站做优化需要多少钱全国建筑资质查询网站
  • 有没有代加工的网站多元网络兰州网站建设
  • 物流 东莞网站建设重庆建工建设工程信息网
  • 界面网站的风格企业网站推广的形式有
  • 银行门户网站是什么意思html 网站模板