Log4j
是目前最为流行的Java日志框架
之一,1999年
发布首个版本,2012年
发布最后一个版本,2015年
正式宣布终止,官方也已不建议使用,并逐步被Logback
和Log4j2
等日志框架所替代,可是无法掩饰光辉历程,以及优良的设计理念。尽管Log4j
有着出色的历史战绩,但早已不是Java
日志框架的最优选择,还在使用该日志框架的项目往往是历史遗留问题。
Log4j API
核心类:
org.apache.log4j.Logger
日志级别:org.apache.log4j.Level
日志管理器:org.apache.log4j.LogManager
日志仓储:org.apache.log4j.spi.LoggerRepository
日志附加器:org.apache.log4j.Appender
日志过滤器:org.apache.log4j.spi.Filter
日志格式布局:org.apache.log4j.Layout
日志事件:org.apache.log4j.LoggingEvent
日志配置器:org.apache.log4j.spi.Configurator
日志诊断上下文:org.apache.log4j.NDC
、org.apache.log4j.MDC
Java Logging
是Java
标准的日志框架,也称为Java Logging API
,即JSR 47
。从Java 1.4
版本开始,Java Logging
成为Java SE
的功能模块,其实现类存放在java.util.logging
包下。
(资料图)
使用Java Logging
最大好处是它属于JDK内置
,不需要添加额外依赖,默认配置文件位于:jre/lib/logging.properties
,具体可以查看LogManager
类readConfiguration
方法,启动的时候可以通过设置VM
参数java.util.logging.config.file
指定配置文件。
Java Logging API
核心类:
java.util.logging.Logger
日志级别:java.util.logging.Level
日志管理器:java.util.logging.LogManager
日志处理器:java.util.logging.Handler
日志过滤器:java.util.logging.Filter
日志格式器:java.util.logging.Formatter
日志记录:java.util.logging.LogRecord
日志权限:java.util.logging.LoggingPermission
日志JMX接口:java.util.logging.LoggingMXBean
Logback
是Log4j
创始人设计的又一个开源日志框架,可以看成Log4j
的替代者,在架构和特征上有着相当提升。Logback
当前分成三个模块:
logback-core
:其它两个模块的基础模块,提供一些关键的通用机制logback-classic
:地位和作用等同于Log4j
,也被认为是Log4j
的一个改进版,并且实现了SLF4J API
logback-access
:logback-access
访问模块与Tomcat
、Jetty
等Servlet容器
集成配置Http
访问的access日志
Logback
核心类:
ch.qos.logback.classic.Logger
日志级别:ch.qos.logback.classic.Level
日志管理器:ch.qos.logback.classic.LoggerContext
日志附加器:ch.qos.logback.core.Appender
日志过滤器:ch.qos.logback.core.filter.Filter
日志格式布局:ch.qos.logback.core.Layout
日志事件:ch.qos.logback.classic.spi.LoggingEvent
日志配置器:ch.qos.logback.classic.spi.Configurator
上图是logback
日志框架的输出日志的核心流程:
Logger
作为日志框架的代言人,程序开发通过Logger
即可完成日志输出工作;Logger
拿到程序传入的日志信息,通过Filter
进行过滤,一般是对日志级别Level
进行过滤,然后将符合条件的日志封装成LoggingEvent
对象,并交接给关联的Appender
对象进行后续处理;Appender
完成日志输出工作,一般Appender
也会有个Filter
过滤流程,将过滤成功的日志输出到控制台、文件、网络等操作;Logger
和Appender
是日志框架比较核心组件,Logger
代表日志输入源,其配置样例见下:
Appender
代表日志输出源,其配置样例见下:
Logger
和Appender
相互独立,都可以实现对日志过滤操作,同时可以实现多对多映射关系,在开发中可以对这些特性灵活应用。比如:生产中一个很常见的做法就是构建一个Level=Error
的Appender
,然后让所有的Logger
都指向该Appender
就可以实现汇聚系统中所有Error
级别的日志,可以快速监测系统运行是否出现异常状况。
节点被配置时,必须配置两个属性name
和class
。name
指定Appender
的名称,而class
指定Appender
具体的实现类。
Appender核心类结构图:
UnsynchronizedAppenderBase
:非线程安全的Appender基类,即public void doAppend(E eventObject)
没有使用synchronized
关键字,而AppenderBase
类中的doAppend()
方法都使用了synchronized
关键字:public synchronized void doAppend(E eventObject)
。
日志可以分配级别,包括:ALL
、TRACE
、DEBUG
、INFO
、WARN
、ERROR
、OFF
,其中ALL
和OFF
日志级别是用于Appender
或Logger
过滤使用。
TRACE(追踪)
:输出更细致的程序运行轨迹;DEBUG(调试)
:这个级别一般记录一些运行中的中间参数信息,只允许在开发环境开启,选择性在测试环境开启;INFO(信息)
:用来记录程序运行中的一些有用的信息,例如:程序运行开始、结束、耗时、重要参数等信息,需要注意有选择性的有意义的输出,到时候自己找问题看一堆日志却找不到关键日志就没有意义了;WARN(警告)
:一般用来记录一些用户输入参数错误;ERROR(错误)
:一般用来记录程序中发生的任何异常错误信息(Throwable
),或者是记录业务逻辑错误;通过LoggerFactory
获取Logger
:Logger getLogger(String name)
,LoggerFactory
采用工厂设计模式,内部维护一个Map
缓存所有生成的Logger
实例信息:Map
。
继承规则
Logger
是有层次关系的,我们可一般性的理解为包名之间的父子继承关系。每个Logger
通常以class全限名称
为其名称。子Logger
通常会从父Logger
继承Logger级别
、Appender
等信息。
日志框架无论Log4j
还是Logback
,虽然它们功能完备,但是各自API
相互独立,并且各自为政。当应用系统在团队协作开发时,由于工程师人员可能有所偏好,因此,可能导致一套系统同时出现多套日志框架情况。
其次,最流行的日志框架基本上基于实现类编程,而非接口编程,因此,暴露一些无关紧要的细节给用户,这种耦合性是没有必要的。
诸如此类的原因,开源社区提供统一日志API
框架,最为流行的是:
apache commons-logging
:简称JCL
,适配log4j
和java logging
slf4j
:适配log4j
、log4j2
、java logging
和logback
统一日志API
,即日志门面接口层,直白点讲:提供了操作日志的接口,而具体实现交由Logback
、Log4j
等日志实现框架,这样就可以实现程序与具体日志框架间的解耦,对于底层日志框架的改变,并不影响到上层的业务代码,可以灵活切换日志框架。
现在日志框架众多:slf4j
、jcl
、jul
、log4j
、log4j2
、logback
等,它们之间存在什么样的关系,我们在开发过程中又如何选取这些日志框架呢?
首先,看下Java日志体系:
通过上图可以概括日志体系大致分为三层:日志接口门面层、绑定/桥接层以及日志实现层。
jcl-over-slf4j.jar(jcl -> slf4j):将commons-logging日志桥接到slf4jjul-to-slf4j.jar(jul -> slf4j):java.util.logging的日志桥接到slf4jlog4j-over-slf4j.jar(log4j -> slf4j):将log4j的日志,桥接到slf4jslf4j-log4j12.jar(slf4j -> log4j):slf4j绑定到log4j,所以这个包不能和log4j-over-slf4j.jar不能同时使用,会出现死循环slf4j-jcl.jar(slf4j -> jcl):slf4j绑定到commons-logging日志框架上slf4j-jdk14.jar(slf4j -> jul):slf4j绑定到jdk日志框架上,不能喝jul-to-slf4j.jar同时使用,会出现死循环slf4j-nop.jar:slf4j的空接口输出绑定,丢弃所有日志输出slf4j-simple.jar:slf4j自带的简单日志输出接口log4j-slf4j-impl.jar(slf4j -> log4j2):将slf4j绑定到log4j2日志框架上,不能和log4j-to-slf4j同时使用log4j-to-slf4j.jar(log4j2 -> slf4j):将log4j2日志桥接到slf4j上,不能和log4j-slf4j-impl同时使用
最为熟悉和使用率较高的log4j
其实就位于日志实现层,即其为一种日志实现框架。既然log4j
已经足够系统使用进行日志输出了,为啥还多此一举弄个日志接口门面层
和绑定/桥接层
?看下图:
系统A
集成了模块A
、模块B
、模块C
三个模块,但是这三个模块使用了不同的日志实现框架,现在系统A
相当于同时存在了三个日志框架,那如何进行配置呢?每个框架都构建一个配置文件这种肯定是不行的,没法进行统一管理,日志较为混乱。
现在看下如何解决上述问题:
模块A
、模块B
、模块C
采用slf4j
日志接口框架,而非具体日志实现类,具体使用哪种日志实现框架是由系统A
配置决定的,系统A
把slf4j
绑定到logback
,则统一采用logback
日志框架,slf4j
绑定到log4j
则统一采用log4j
日志框架。日志接口 --> 日志绑定 --> 日志实现
,日志接口和日志实现进行了解耦,模块只关注接口不关注实现,具体采用哪种实现是由其所在的系统环境决定,这样就可以实现日志的统一配置和管理。
对于上述解决方案,如果模块A
、模块B
、模块C
是新开发统一采用slf4j
日志接口框架没问题,但是对于旧系统,比如模块B
、模块C
都是很久之前开发的模块,分别采用了不同的日志实现框架,见下图:
如果系统A
把slf4j
绑定到logback
日志框架上,但是模块B
、模块C
由于没有采用slf4j
,绑定对于它们来说是无效的,这时候就要使用桥接
。
桥接的大致结构如上图,通过桥接把log4j
、jdk log
等日志实现框架桥接到slf4j
上,由于slf4j
又被绑定到了logback
上,则模块B
和模块C
最终会被logback
纳管,而不是log4j
和jdk log
,同样可以实现日志统一配置管理。
以上就是项目开发中经常遇到的问题,以及绑定和桥接之间的区别。
spring
体系中日志框架Spring框架
Spring Framework 4.X
及之前的版本,都是使用的标准版JCL
日志框架,该依赖由spring-core
间接引入。Spring
框架的日志信息都是使用JCL
标准接口来进行输出。下面说下项目中常碰到的三种情况:
log4j
:commons-logging
原生支持和log4j
的动态绑定,所以不需要任何配置即可将jcl
的日志输出绑定到log4j
上;项目中使用log4j2
:commons-logging
原生并不支持和log4j2
的动态绑定,但是log4j2
本身提供了将jcl
绑定到log4j2
的依赖包:log4j-jcl.jar
;项目中使用slf4j
:需要采用桥接模式
将jcl日志
引入到SLF4J
上,添加依赖包jcl-over-slf4j.jar
,否则可能Spring框架
的日志无法输出到日志文件中。使用spring 4.X
及之前版本的框架时一定要注意上面情况,否则很容易出现业务日志输出正常,但是spring
框架本身日志没有输出的情况,导致一些错误无法察觉或者不利于排查。
spring5.0
带来了commons-logging
桥接模块的封装,它被叫做spring-jcl
而不是标准版jcl
,无需添加额外依赖包,可自动检测绑定到Log4j2
、SLF4J
。
SpringBoot框架
springboot-1.X
- springboot-2.X
:
从SpringBoot
框架可以看出,默认采用SLF4J+Logback
组合的日志框架,通过桥接模式
将其它日志框架桥接到SLF4J
上。
SLF4J(Simple Logging Facade For Java)
是一个为Java
程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就像我们经常使用的JDBC
一样,只是了一些标准规范接口。因此,单独的SLF4J
是不能工作的,它必须搭配其他具体的日志实现方案。
SLF4J
和Logback
是同一个作者开发的,所以Logback
天然与SLF4J
适配,不需要引入额外适配库。
这里还有个比较有意思的事情,SLF4J
项目提供了很多适配库、桥接库,唯独没有提供对Log4j2
的适配库和桥接库,不过Apache Logging
项目组自己开发了:log4j-slf4j-impl
和log4j-to-slf4j
。
Jakarta commons-logging
简称JCL
,是apache
提供的一个通用日志门面接口,最后版本更新停留在2014年
,且默认只能提供对Log4j
、Java Logging
进行适配。
JCL
已慢慢淡出人们的视线,一些历史遗留项目也开始慢慢由JCL
转向SLF4J
,如:Spring 5.0
开始没有再依赖原生的JCL
框架,SpringBoot
默认采用SLF4J+Logback
。SLF4J
已经成为了Java日志组件
的明星选手,可以完美替代JCL
,使用JCL
桥接库也能完美兼容一切使用JCL
作为日志门面的类库,现在的新系统已经没有不使用SLF4J
作为统一日志API接口层
的理由了。
SLF4J
和JCL
对比,二者最大区别在于它们的绑定机制的不同,这也决定了为什么JCL
会被慢慢的淘汰掉的根本原因。
1、slf4j
定义好两个接口规范:
public interface LoggerFactoryBinder { //获取一个ILoggerFactory实现类,采用工厂设计模式创建Logger public ILoggerFactory getLoggerFactory(); public String getLoggerFactoryClassStr();}
public interface ILoggerFactory { public Logger getLogger(String name);}
第一个接口LoggerFactoryBinder
定义绑定类,如果日志框架需要和slf4j
进行绑定,就要提供一个该接口实现类,并且名称是StaticLoggerBinder
,这样,在slf4j
模块中,使用StaticLoggerBinder.getSingleton();
就可以获取到这个绑定类,进而通过StaticLoggerBinder
绑定类的getLoggerFactory()
获取到Logger
生产工厂ILoggerFactory
。
注意:这里的绑定机制利用到了类加载原理,如果存在多个绑定类StaticLoggerBinder
,根据类路径的前后顺序,只有有一个会被加载进来,这个加载进来的就实现了绑定。
2、ILoggerFactory
也是slf4j
模块提供的一个接口,因为各个日志框架中LoggerFactory
不统一,所以slf4j
提供一个接口,让各个日志框架把自己的LoggerFactory
包装成ILoggerFactory
接口,这样slf4j
模块下就可以统一使用。这里利用到的是设计模式中的:适配模式。系统间对接比较常用的一种设计模式,系统间接口不统一,通过适配模式实现一致。
3、可以看下,slf4j
和log4j
绑定使用slf4j-log4j12.jar
,这个模块下StaticLoggerBinder
实现见下:
public class StaticLoggerBinder implements LoggerFactoryBinder { private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); public static final StaticLoggerBinder getSingleton() { return SINGLETON; } public static String REQUESTED_API_VERSION = "1.6.99"; private static final String loggerFactoryClassStr = Log4jLoggerFactory.class.getName(); private final ILoggerFactory loggerFactory; private StaticLoggerBinder() { loggerFactory = new Log4jLoggerFactory(); try { @SuppressWarnings("unused") Level level = Level.TRACE; } catch (NoSuchFieldError nsfe) { Util.report("This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version"); } } public ILoggerFactory getLoggerFactory() { return loggerFactory; } public String getLoggerFactoryClassStr() { return loggerFactoryClassStr; }}
4、StaticLoggerBinder
:静态绑定,这个静态是相对于JCL
所使用的动态绑定来说的,为什么说是静态的呢?因为你如果要绑定,需要在环境中添加绑定相关的jar,这样slf4j就可以加载到绑定包中的StaticLoggerBinder
类实现绑定。
接口和实现类之间采用一种松耦合的设计,有利于灵活的扩展,但是在使用时有需要一种技术把它们关联起来,这是软件设计中比较常用到的设计思想,JDK 1.6
对此专门提供了一种技术:SPI
。SLF4J
从1.8版本
起,也开始使用SPI
方式实现绑定,而不再采用通过寻找指定类StaticLoggerBinder
的方式进行绑定。下面代码就是slf4j-1.8
中使用SPI
进行绑定核心代码:
private static List findServiceProviders() { ServiceLoader serviceLoader = ServiceLoader.load(SLF4JServiceProvider.class); List providerList = new ArrayList(); for (SLF4JServiceProvider provider : serviceLoader) { providerList.add(provider); } return providerList;}
SLF4JServiceProvider
就是类似于上面的LoggerFactoryBinder
接口,通过它可以获取到ILoggerFactory
,这样其它日志框架和slf4j
进行集成时只需要提供一个SLF4JServiceProvider
接口的实现类即可,不再要求必须是像之前固定名称必须是:StaticLoggerBinder
,固定名称带来的一个问题是包路径也要一致,无形中存在侵入性,而使用SPI
方式更加的灵活。比如我们常用到的JDBC
也使用到SPI
,感兴趣的可以多了解下,对系统设计还是比较实用的一种技术。
JCL
采用动态绑定机制,缺点是容易引发混乱,在一个复杂甚至混乱的依赖环境下,确定当前正在生效的日志服务是很费力的,特别是在程序开发和设计人员并不理解JCL
的机制时。
JCL
动态绑定的核心逻辑位于LogFactoryImpl
类的discoverLogImplementation
方法中如下代码块:
for(int i=0; i
其中classesToDiscover
数组的中定义了可以使用的适配器类,见下:
String[] classesToDiscover = { "org.apache.commons.logging.impl.Log4JLogger", "org.apache.commons.logging.impl.Jdk14Logger", "org.apache.commons.logging.impl.Jdk13LumberjackLogger", "org.apache.commons.logging.impl.SimpleLog"};
简单来说:JCL
模块中会有判断,当前项目中是否存在Log4j
的API
,如果有就直接和Log4j
进行绑定;如果没有,则继续向下查找,是否存在JDK Log
相关API
,如果有就绑定;如果JDK Log
也没有,则提供一个SimpleLog
默认实现,该实现什么也不做,输出的日志直接会被丢弃,什么也看不到。
总结
相较于JCL
的动态绑定机制
,SLF4J
则简单得多,采用静态绑定机制
,可能你还没有很好理解这两者的本质区别,看下图:
JCL
框架自动检查当前环境中是否存在相关日志API
,如果有就绑定,注意它内部有个固定的绑定顺序,这种所谓的动态绑定很容易出现问题,特别是系统较大可能会存在很多日志框架,就会出现混乱,不够灵活,这就导致了为啥JCL
已经被慢慢淘汰掉。
而slf4j
采用的静态绑定,不是直接和日志框架进行绑定,而是中间多了一个环节:绑定类,它就像一个开关一样,关键是可以进行控制,比如想和log4j2
进行绑定,就添加log4j-slf4j-impl.jar
,开关就会打开进行绑定。slf4j
不管是采用StaticLoggerBinder
还是后面采用的SPI
,始终有个绑定类控制绑定关系。
总结
对Java
日志组件选型的建议
统一日志API
采用SLF4J
,在模块中引入slf4j-api
,需要绑定日志框架中引入logback-classic
日志实现框架选型:如果最求高并发、高性能、日志量特别大的项目,可以采用Log4j2
,否则都采用Logback
SpringBoot
从2.0
开始,默认内置使用logback+slf4j
方式,所以从趋势上来说,项目中优先建议采用这个组合方式再一个就是对slf4j
和jcl
两种日志框架绑定机制的分析,学习了接口和实现类松耦合关系最后又是如何在运行时进行绑定,或许可以为我们以后的系统设计提供些思路,从而构建出更加灵活的、可扩展的应用。
x
-
【编程开发】- 01 日志框架
2023-03-28
-
世界动态:怎么用电脑声卡玩全民K歌
2023-03-28
-
澳门大赛车博物馆展出8位国际知名赛车手蜡像|焦点快看
2023-03-27
-
巴乃送葬队送的谁_巴乃在广西的 今日报
2023-03-27
-
香港证监会就在香港实施无纸证券市场而建议制订的附属法例展开谘询
2023-03-27
-
神木市中鸡镇:持续巩固提升人居环境整治成果_关注
2023-03-27
-
林高远与陈幸同横扫对手,林诗栋与蒯曼获胜,张瑞击败陈梦克星 当前速看
2023-03-27
-
天天快看点丨中无人机(688297)3月27日主力资金净卖出4271.24万元
2023-03-27
-
真香?雷特吉2场2球,意球迷争论:他不会说意语vs比因莫比莱强
2023-03-27
-
世界焦点!房贷4.1能选固定利率吗 分析如下
2023-03-27
-
全球观察:月光一样的灵魂——山东诗人泉霞出版新诗集《月光吟》
2023-03-27
-
1.07亿!两家企业联合中标嘉定区管道路照明设施节能改造工程
2023-03-27
-
团市委组织开展在深圳创业老乡联谊会暨送金融服务活动|环球微动态
2023-03-27
-
世界观焦点:主板注册制新股开启申购 投资者打新须适应新规则
2023-03-27
-
滚动:海盗船推出27寸OLED电竞显示器:240Hz\2K、0.3ms响应
2023-03-27
-
世界时讯:梓川咲太头像_梓川咲太语录
2023-03-26
-
世界今热点:liveherewego:曼联外租后卫特莱斯:应...
2023-03-26
-
怕什么来什么?美传出坏消息,风暴席卷全美,美政府作出悲观预测
2023-03-26
-
环球关注:抖音过年了过年了过年了什么歌
2023-03-26
-
文灿股份:与蔚来汽车签署战略合作框架协议-当前最新
2023-03-26
-
中邮证券:碳酸锂价格跌破30万元/吨 电池盈利有望率先修复-世界观点
2023-03-26
-
撞了豪车赔不起咋办交警最好这么做,不然保险公司也帮不了你
2023-03-26
-
似水年华歌词
2023-03-26
-
我的世界四合院建筑教程?
2023-03-26
-
焦点快看:316l和316不锈钢有什么区别_316与316l不锈钢区别
2023-03-26
-
恭喜辽篮!恭喜展淑萍!付豪完成重要签约,球迷沸腾了
2023-03-25
-
辉瑞董事长艾伯乐:计划在华提交约12款创新药物的上市申请
2023-03-25
-
梁思成的故事
2023-03-25
-
姬姓分支中的魏姓_姬姓分支-全球速讯
2023-03-25
-
战国十大名将_魏国五子良将_全球今日报
2023-03-25
-
“云养牛”每月预期收益率70%? 世界快资讯
2023-03-25
-
视点!黄冈特产有哪些土特产
2023-03-25
-
道氏技术:2月下旬兰州基地首期年产2.5万吨的石墨化产线已投产
2023-03-25
-
新动态:热门专业2分钟“抢空”!昆明老年教育持续火爆
2023-03-25
-
快播:甘油在化妆品中的作用_矿油在化妆品中的作用
2023-03-25
-
环球看点!黑卡是什么意思_黑卡是什么
2023-03-25
-
农历是阴历的意思吗_全球热点
2023-03-24
-
第十三个星座的图片_第十三个星座
2023-03-24
-
【当前热闻】单基因遗传病ppt_单基因遗传病有哪些
2023-03-24
-
环球今日讯!【原神鸣神组同人.67】当你穿越成薙刀见证了将军和宫司的爱情....
2023-03-24
-
龙虎榜丨全聚德今日跌停,知名游资宁波桑田路卖出2448.57万元 每日聚焦
2023-03-24
-
今日导读:西安一餐馆被曝员工剁羊骨用脚踩;官方回应顾客称螺蛳粉中吃出蚯蚓;网友称知名咖啡冰块多到吸管插不进(2023年3月24日)
2023-03-24
-
赵祯的曹皇后简介 焦点热门
2023-03-24
-
你买的LV、Gucci是真还是假?AI就能告诉你
2023-03-24
-
环球快播:广西金霖保险代理有限公司
2023-03-24
-
“一树一景”完美融入 梅园修剪万株梅花树 只为来年花开更俏丽
2023-03-24
-
华发股份:2022年归母净利下降主要受项目权益比例下降影响-世界要闻
2023-03-24
-
兑换白金会员卡(白金卡兑换工具)|每日热点
2023-03-24
-
穿越原始社会的小说推荐_穿越原始社会的小说
2023-03-24
-
什么是斋月节
2023-03-24
-
五子衍宗丸副作用大不大_五子衍宗丸副作用
2023-03-24
-
高级感的咖啡店餐饮设计,ip独特又有趣!
2023-03-24
-
看点:大举入局不足一年 “组件新军”通威狂飙:接连斩获央企大单
2023-03-23
-
每日短讯:禹唐体育举办亚运营销案例分享和资源推介直播专场
2023-03-23
-
赞美老师的散文
2023-03-23
-
沈阳新民市降低区域要素成本 为民营企业打造更优生态环境
2023-03-23
-
世界新资讯:苏州固锝: 关于公司董事、高级管理人员股份减持计划实施时间过半的进展公告
2023-03-23
-
电晕处理工艺_电晕处理是什么意思 最新资讯
2023-03-23
-
2022年揭阳考区法律职业资格考试时间及考点信息 今日聚焦
2023-03-23
-
零跑汽车2022年营收增近3倍,亏损大幅扩大,今年销量快速下滑成隐忧
2023-03-23
-
日本停售“国民神车”原因曝光!丰田凯美瑞将专攻海外市场
2023-03-23
-
【时快讯】往年护士资格证分数线都是多少
2023-03-23
-
每日热点:3种蔬菜,吃一次相当于10根铅笔,孩子发育慢,家长还常给孩子吃
2023-03-23
-
枣强县航箭机械设备科技有限公司_关于枣强县航箭机械设备科技有限公司简述 世界热资讯
2023-03-23
-
汽车降价潮中有多少水分?补贴规则不明,“真香”背后藏风险_天天热议
2023-03-23
-
卓越集团荣获“2023房地产年度卓越表现”两项大奖_世界观天下
2023-03-23
-
突发!2500亿券茅意外大跳水 啥情况?
2023-03-23
-
微速讯:怎么给财神爷上香
2023-03-22
-
连云港(601008):江苏连云港港口股份有限公司独立董事独立意见
2023-03-22
-
参加同学聚会注意事项_参加同学聚会注意事项_全球速读
2023-03-22
-
全球热点评!2023天津体育学院招聘硕士岗位工作人员笔试安排公告
2023-03-22
-
问道手游新区内测中心在哪里,问道开新区前有内测么有的话谁知道怎么加入啊_焦点速读
2023-03-22
-
无证驾酒驾驶肇事逃逸怎么判
2023-03-22
-
天天微头条丨iOS17或支持第三方应用商店 库克:我坚决反对!
2023-03-22
-
天天热讯:后院围墙可以开门吗?后院围墙开门风水不好怎么办?
2023-03-22
-
微头条丨河南省教育考试院会考成绩查询入口
2023-03-22
-
正邦科技:3月21日融券卖出1.6万股,融资融券余额4.18亿元
2023-03-22
-
每日快报!“千”里挑“一”,大理的自由和归属感带她走出阴霾
2023-03-22
-
丰德丽控股(00571)发布中期业绩,股东应占亏损8243.1万港元 同比减少35.76%_天天视讯
2023-03-22
-
一拖股份: 一拖股份会计差错更正公告|天天消息
2023-03-21
-
大快人心!足协又一条大鱼落网,疑似签字哥被抓,名记公开确认
2023-03-21
-
今日观点!中间精密度计算公式_精密度计算公式
2023-03-21
-
富液闪蒸罐工作原理_闪蒸罐的工作原理
2023-03-21
-
王者荣耀英雄大全官网_王者荣耀全部英雄大全
2023-03-21
-
天天时讯:男童睡眠中经常抖动翻身系癫痫发作 癫痫五种食物不能碰
2023-03-21
-
天天快资讯:2023成都二诊分数线划线-成都二诊2023本科线_一本、二本划定
2023-03-21
-
玉田今年已建成337户“美丽庭院”
2023-03-21
-
竹叶青的作用_什么是竹叶青-环球微资讯
2023-03-21
-
火鸡好吃不味道好不_火鸡好吃-每日消息
2023-03-20
-
天天快看:蒙娜丽莎集团荣获“有家就有佛山造”产业IP使用授权
2023-03-20
-
法国即将就养老金改革投票,工会呼吁在最后一天大力度罢工|世界热资讯
2023-03-20
-
我国最早发现地面沉降的地区是哪儿_我国最早发现地面沉降的地区是哪里 今亮点
2023-03-20
-
廊坊:强力推进新型工业化 加快建设制造强市 今日热文
2023-03-20
-
长望路西延线(金星路—北二环段)项目起止点+通车时间_世界今日讯
2023-03-20
-
华商基金陈夏琼:新能源的快速发展或带动储能需求 环球快播
2023-03-20
-
天天热消息:永赢中证全指医疗器械ETF净值下跌2.03% 请保持关注
2023-03-20
-
心易会员有什么福利(心易会员官网)
2023-03-20
-
天天实时:怎样检查前列腺有问题_怎样检查前列腺液常规
2023-03-19
-
十化警务升级版丨隐患治理精细化:辛勤值守护学岗 师生称赞送锦旗|世界快讯
2023-03-19
-
54岁许晴现状曝光:不需要男人,脱离俗世住豪宅,把自己宠成公主 每日观点
2023-03-19
-
中国男足即将出征,武磊:期待球队能展现出全新的面貌 环球信息
2023-03-19
-
委托加工物资消费税会计分录_委托加工物资消费税
2023-03-19
-
天天观焦点:立春酒一天跌800!3月8日酒水价格行情...…
2023-03-19
-
报纸新闻标题制作与排版艺术
2023-03-18
-
服务周边9万多居民!嘉定又添一家邻里中心_世界视讯
2023-03-18
-
《雷霆沙赞2》上映首日票房未破千万,好莱坞爆米花,卖不动了吗
2023-03-18
-
韭菜炒鸡蛋的做法最好吃的一种-韭菜炒鸡蛋的家常做法-今亮点
2023-03-18
-
全球微速讯:华秦科技(688281)3月17日主力资金净卖出115.21万元
2023-03-18
-
天降大任于斯人也必先苦其心志劳其筋骨什么意思_你了解吗
2023-03-18
-
当前播报:数控压力机_关于数控压力机简介
2023-03-17
-
adhd-热议
2023-03-17
-
【播资讯】ST三圣:监事杨明飞辞职
2023-03-17
-
今日最新!ETF追踪:昨日ETF净申购83.89亿元 资金加仓创业板ETF
2023-03-17
-
芙蓉区:加强金融业务培训 提升金融服务质效 每日快播
2023-03-17
-
环球看热讯:大众全新SUV曝光!动力超本田CR-V,最快年底前进口引入销售
2023-03-17
-
两次密码不一致是怎么回事_两次密码不一致
2023-03-17
-
曼晚评分曼联VS贝蒂斯表现:卡塞米罗、德赫亚等5人并列获7分
2023-03-17
-
荣耀50SE和oppoReno6怎么选择
2023-03-17
-
捷邦科技将于3月21日解禁88.95万股-每日观察
2023-03-16
-
每日热讯!裨益读音的读法
2023-03-16
-
濮耐股份:拟与郑州海迈就新型镁碳砖等签订技术开发合同 产品技术许可使用协议 世界聚焦
2023-03-16
-
世界新资讯:异动快报:麦趣尔(002719)2023年03月16日14时57分触及涨停板
2023-03-16
-
微资讯!分子印迹英文_分子印迹
2023-03-16
-
易点云经营现金流转正,净现金留存率保持在100%以上
2023-03-16
-
应用程序无法正常启动0xc0000135_应用程序无法正常启动0xc00007b|焦点短讯
2023-03-16
-
快消息!单场欧冠淘汰赛梅开二度,奥斯梅恩是首位做到的尼日利亚球员
2023-03-16
-
重点聚焦!2023上海樱花节开幕
2023-03-16
-
夜读 | 20年交易“老兵”的宝贵经验:敬畏市场 勇于认错-世界今日讯
2023-03-15
-
香港汇丰银行网上银行怎么申请_香港汇丰银行网上银行
2023-03-15
-
快手是腾讯旗下软件吗_快手是腾讯的吗|今日热闻
2023-03-15
-
金河生物(002688.SZ):佑蓝宝(蓝耳灭活苗)和佑蓝泰(蓝耳双组分嵌合活疫苗)总体销售势头强劲
2023-03-15
-
大摩:短期估值更具吸引力 予以众安在线(06060)“增持”评级
2023-03-15
-
快看:Doughnut品牌介绍_Doughnut帆布包
2023-03-15
-
春风十里,去南湖赏花去! 世界热点
2023-03-15
-
盛和资源(600392):3月14日北向资金增持96.29万股
2023-03-15
-
全球短讯!中国为何承认锡金是印度的_中国为什么放弃锡金
2023-03-14
-
世界最新:厦门今年首批4000套保障房将启动意向登记
2023-03-14
-
经纬股份募资2亿“买地盖楼”,实控人为大专学历|聚看点
2023-03-14
-
职业道德的特点不包括_职业道德的特点 全球最新
2023-03-14
-
美博会上秀域零加盟费引发加盟高潮,8年无息贷款、培训开放等政策吸引目光-独家
2023-03-14
-
《黑暗荣耀2》:全在俊的消失,是文东恩和河道英互赠的离别礼物!
2023-03-14
-
天天微动态丨埃杜:过往人们拿阿森纳的过程开玩笑,如今我们达到想要水准
2023-03-14
-
鱼刺|世界资讯
2023-03-14
-
每日快看:带我走到遥远的以后带走我_歌词 ldquo 带我走 去那遥远的以后 rdquo 歌名是
2023-03-14
-
前沿热点:快讯2023-03-13 19:48:38
2023-03-13
-
4s 越狱了不见cydia_4s 越狱
2023-03-13
-
星帅尔:华锦电子生产的光通信、光传感器组件产品应用范围较广,具体应用场景视客户的需求而定
2023-03-13
-
今日热议:德布劳内:我在英超中也是老人了;对自己的期待比外界的更高
2023-03-13
-
老人把7万养老钱埋树下找不着报警求助:民警一路翻挖,掘地三尺全找回_环球新资讯
2023-03-13
-
最新战况:俄称拦截乌军多枚火箭弹 乌称在巴赫穆特等地击退俄军进攻
2023-03-13
-
安慰剂不能产生效应_安慰剂对照不适用哪种情况-当前动态
2023-03-13
-
孔子10个简短小故事_孔子的故事有哪些|天天实时
2023-03-12
-
每日动态!基金牌照不是在每一个宣传里都适宜应用:华媒舍
2023-03-12
-
桂林十八中_关于桂林十八中的介绍
2023-03-12
-
当前报道:北洋政府_说一说北洋政府的简介
2023-03-12
-
苹果电脑打印机脱机怎么重新连接_电脑打印机脱机怎么重新连接
2023-03-12
-
铜鼓县气象台发布大风蓝色预警信号【IV级/一般】-环球今日报
2023-03-11
-
腾讯动漫如何开通vip_腾讯动漫vip怎么开通
2023-03-11
-
心理学看透一个人_什么人适合学心理学|即时
2023-03-11
-
世界速看:ps里边的取消选区是什么快捷键_PS中有关选区的快捷键是什么
2023-03-11
-
去美元再次提上日程,金砖五国将讨论建统一货币体系?向中俄靠拢 焦点速讯
2023-03-11
-
8岁男孩单手打破汉诺塔世界纪录,曾练到手麻
2023-03-11
-
cryengine3
2023-03-11
-
焦点播报:官媒出手痛批“三八女神节”, 掀开资本遮羞布, 央视海霞一针见血
2023-03-11
-
关注:2023年产假工资如何计算?产假期间单位可以正常发工资不发生育津贴吗?
2023-03-10
-
冷宫弃妃皇上请废了我结局_冷宫弃妃皇上请废了我
2023-03-10
-
坏账的账务处理方法有哪些_坏账的账务处理方法
2023-03-10
-
橡胶木致癌原因分析_橡胶忍者
2023-03-10
-
焦点要闻:走字底的都有什么字_求所有 ldquo 走字底 rdquo 的字
2023-03-10
-
巴西校车与火车相撞 两名学生当场死亡
2023-03-10
-
轻微骨裂症状有哪些_轻微骨裂症状-速递
2023-03-10
-
天天视讯!青岛海边哪里好玩景点排名_青岛海边哪里好玩
2023-03-10
-
微星Vortex桌面迷你VR主机现已上市售价1299.99美元
2023-03-10
-
河北多地气温破3月上旬最高纪录 民众称“快进到夏天” 全球热点评
2023-03-09
-
世界微速讯:神通科技: 2023年第二次临时股东大会决议公告
2023-03-09
-
焦点快播:rar文件强行清除密码_专业清除rar解压密码
2023-03-09
-
万科与微软Azure OpenAI合作落地 客户反馈分析平台搭载GPT-3
2023-03-09
-
硕贝德:6G通信行业处于技术研究起步阶段,公司已有预研,其中卫通天线已完成研发 环球精选
2023-03-09
-
不打了!杜兰特突发退赛!保罗真要终生无冠了吗?
2023-03-09
-
广电机顶盒用什么线连接电视_广电数字电视机顶盒接网线
2023-03-09
-
小学生拾得价值16万黄金后续:每年获6000元奖励,直至高中毕业
2023-03-09
-
新车品鉴:吉利ICON上市时间延后 改为线上直播发布会-环球观天下
2023-03-09
-
谁有仙剑奇侠传4的激活码_免费?-ZOL问答-每日速读
2023-03-09
-
今日热文:降准对股市影响,有以下三点
2023-03-09
-
俄媒痛批C919是“组装货”,不如俄MC-21-环球时讯
2023-03-09
-
今日聚焦!石林门票多少钱_石林风景区门票是多少钱
2023-03-08
-
每日简讯:mp3怎么连接到电脑上(MP3怎么连接到电脑)
2023-03-08
-
绵阳师院2020录取分数线_绵阳师院|世界热讯
2023-03-08
-
红环
2023-03-08
-
英媒-当前快讯
2023-03-08
-
全球热门:闪电盒子是什么软件
2023-03-08
-
世界快报:关注女性高发疾病、加大养老保险购买比重……“妇女节”之际保险专家给出一份“她保险”清单
2023-03-08
-
奇瑞瑞虎9正式亮相,气场充足,整体质感提升明显
2023-03-08
-
天天热门:佛陀十大弟子
2023-03-08
-
N一彬上市首日涨停,预计一季度扣非归母净利最多下滑21.26%
2023-03-08
-
微信无法连接到服务器1104_微信无法连接到服务器
2023-03-08
-
试卷模板word文档_试卷模板word
2023-03-08
-
全球观热点:反黑路人甲剧情
2023-03-08
-
总会计师的职责包括哪些_总会计师
2023-03-08
-
本溪桓仁旅游景点大全_本溪旅游景点大全
2023-03-07
-
疏的偏旁部首是什么
2023-03-07
-
茶树菇老鸭汤_茶树菇老鸭汤做法
2023-03-07
-
别人说端午安康怎么回复_百事通
2023-03-07
-
男生腿毛多是什么原因造成的_男生腿毛多是什么情况
2023-03-07
-
焦点精选!给孩子吃喂宠物的鸡架?男子下跪“求放过”
2023-03-07
-
播报:撼天记
2023-03-07
-
2023年3月7日上海兆美纸业再生箱板纸价格下调
2023-03-07
-
白鹭洲公园好玩吗
2023-03-07
-
世界微动态丨投保人买重疾险后确诊癌症,保险公司拒赔败诉:未提示免责条款
2023-03-07
-
看热讯:重庆交通建设今年计划完成投资1100亿元 未来五年有望实现北上广高铁6小时通达
2023-03-07
-
全球球精选!金梅瓶2
2023-03-07
-
焦点速递!与领导相处,这些思维一定要明白!
2023-03-07
-
微动态丨你妹什么意思
2023-03-07
-
即时看!中国一线城市有哪些_中国一线城市有几个
2023-03-07
-
定位猎跑SUV!腾势N7官图正式发布|今日精选
2023-03-06
-
须藤元气
2023-03-06
-
图片报:因法国大罢工影响航班,巴黎全队将提前抵达慕尼黑|观天下
2023-03-06
-
世界速读:河南食品网
2023-03-06
-
省第十四届百县篮球赛(西部赛区)总决赛在曲阜完美收官 当前播报
2023-03-06
-
玩穿越火线FPS低怎么办
2023-03-06
-
元曲在元代被称作新_元曲在元代被称作
2023-03-06
-
天天微头条丨净网2023 线下演唱会回来了!已有多人受骗!(公安部网安局)
2023-03-06
-
环球观点:冠心病食疗
2023-03-06
-
舞蹈剧场《火车站》即将“进站” 环球热闻
2023-03-06
-
今日视点:中班下学期保育员个人工作总结_中班下学期保育员个人工作总结
2023-03-06
-
播报:诈骗10余万元只为打赏“主播”?九江一男子被抓
2023-03-06
-
皇家娱乐城_环球快看
2023-03-06
-
当前视点!设备维护记录表模板_设备维护
2023-03-06
-
105个班丰富多彩,长沙群艺馆春季公益课明天报名!|最新资讯
2023-03-05
-
世界热消息:文章的电视剧有哪些
2023-03-05
-
每日短讯:10.67亿!你是其中之一
2023-03-05
-
当前速看:灰姑娘皇后
2023-03-05
-
环球关注:【关于格调社区开展“学雷锋志愿服务春季行动”的通知】
2023-03-05
-
关注:琉璃美人煞璇玑的十生十世都是什么
2023-03-05
-
怎么修改电脑字体大小设置_怎么修改电脑字体
2023-03-05
-
世纪欢乐园门票-世界通讯
2023-03-05
-
[网王]龙套修养手册
2023-03-05
-
《星落凝成糖》:乘轻喜之风,造神话美学-环球短讯
2023-03-05
-
天天速递!雨林古茶坊用眼睛去感受雨林之美
2023-03-04
-
运20总师说我们想争一口气具体详细内容是什么
2023-03-04
-
世界速递!初榨橄榄油的食用方法
2023-03-04
-
2023武汉职工医保住院报销比例是多少 2023年武汉职工医保住院报销标准如下
2023-03-04
-
【全球快播报】文明的坐标|“五岳之首”泰山
2023-03-04
-
《劲漫画》系列:核心防卫1 今日热搜
2023-03-03
-
当前消息!2023宁波体育中考中长跑是必测项目吗
2023-03-03
-
大行评级|摩通:料万科获短期资金追入 民企内房现配股潮
2023-03-02
-
天天信息:16个行业获融资净买入 计算机行业获净买入最多
2023-03-02
-
最新消息:2011第二届 成都养生健康产业博览会
2023-03-02
-
全线围剿!23盘,3大梯队,有你的菜?
2023-03-02
-
“奥运排行榜”教学思路_全球实时
2023-03-01
-
30天搞定生活英语口语
2023-03-01
-
烟熏肉怎么保存不坏_烟熏肉怎么保存
2023-03-01
-
拓尔思: 关于提前赎回拓尔转债暨即将停止交易的重要提示性公告
2023-03-01
-
天天观察:国家统计局:中国2月制造业PMI升至52.6%
2023-03-01
-
环球快看:Ampera-e
2023-03-01
-
蔚宇电气助力绿色出行_打造安全可靠的交流充电桩
2023-03-01
-
当前热点-终于输了!德罗赞低迷,贝弗利加盟首败,波波维奇搅局东部
2023-03-01
-
孤独的十二个级别图片_孤独的十二个级别图
2023-03-01
-
世界热推荐:立体书怎么做的_立体书怎么做
2023-03-01
-
浅析小学数学课堂有效管理方法-全球快看
2023-03-01
-
学字的偏旁部首叫什么_学字的偏旁叫什么 今日精选
2023-03-01
-
月经推迟的原因吃什么最快来月经_不来月经的原因都有哪些
2023-03-01
-
天天快看:烟雨江湖七星岩怎么获得_烟雨江湖七星岩获得攻略
2023-03-01
-
【全球独家】城阳区气象台发布大风蓝色预警【IV级/一般】【2023-02-28】
2023-02-28
-
ppt无法打开修复_ppt打不开怎么修复
2023-02-28
-
[快讯]科恒股份:关于持股5%以上股东股份减持计划届满暨实施情况 今日最新
2023-02-28
-
环球今日报丨南锣鼓巷垃圾激增!无痕旅游应成为另一道风景
2023-02-28
-
今天最新消息 新疆新增确诊病例2例 新增无症状感染者164例
2023-02-28
-
当前关注:独上高楼望尽天涯路是属于什么体裁_独上高楼 望尽天涯路 是什么意思
2023-02-28
-
每日资讯:每月28日有机会免费坐地铁!青岛地铁APP每次将发万份优惠券
2023-02-28
-
岫玉手镯和翡翠的区别?
2023-02-28
-
蔬菜包成花束_蔬菜花束包装教程图解
2023-02-28
-
U·阿尔帕伊 当前时讯
2023-02-28
-
合同诈骗罪有多大刑法
2023-02-28
-
减脂餐饭前吃还是饭后吃_减脂餐
2023-02-28
-
win10 32位系统_win10有32位系统
2023-02-27
-
次氯酸的勾兑比例? 环球快报
2023-02-27
-
骅怎么读拼音_骅
2023-02-27
-
蓝色手推车_天天新视野
2023-02-27
-
韩外长称台海稳定对韩方有直接影响,中方:中国内政不容他人置喙|全球滚动
2023-02-27
-
ST中珠(600568)2月27日主力资金净卖出9.43万元-当前视点
2023-02-27
-
通达动力2月27日快速反弹
2023-02-27
-
李钟硕韩孝周电视剧_李钟硕韩孝周
2023-02-27
-
焦点信息:您的外卖已经起飞!深圳人口密集区低空空域面向物流无人机开放
2023-02-27
-
赵云死了诸葛亮没有掉一滴眼泪,为何张苞死了诸葛亮却吐血?原因不一般! 今日热文
2023-02-27
-
焦点要闻:年内新成立公募基金117只 权益类基金占比七成
2023-02-27
-
天蓝色
2023-02-27
-
开封府剧情_讲的是什么故事
2023-02-27
-
南京中考如何填报平行志愿_如何填报平行志愿|世界今头条
2023-02-26
-
全球速读:帕米拉
2023-02-26
-
剑傲重生百度百科女主_剑傲重生5200
2023-02-26
-
东环路
2023-02-26
-
保洁员捡2万元报警后疑被开除,当事双方发声-天天热推荐
2023-02-26
-
当前速读:西藏那曲市药品安全形势总体稳中趋好
2023-02-26
-
环球今亮点!会计制度设计
2023-02-26
-
即时焦点:双色球复式投注玩法价格表 双色球复式玩法价格
2023-02-26
-
世界最新:易氏膏药_对于易氏膏药简单介绍
2023-02-26
-
人力资源管理的定义 焦点信息
2023-02-26
-
长沙开福区纪委监委:党章党规讲习专题课堂开讲
2023-02-26
-
天天短讯!银保监会:要求银行按合同约定服务客户提前还款
2023-02-25