日志传输方法及装置、存储介质、电子装置与流程

文档序号:24066027发布日期:2021-02-26 13:03阅读:71来源:国知局
日志传输方法及装置、存储介质、电子装置与流程

[0001]
本发明涉及通信领域,具体而言,涉及一种日志传输方法及装置、存储介质、电子装置。


背景技术:

[0002]
随着物联网快速发展,物联网app开发作为其中重要的环节,在当今和未来的很长一段时间内,承载着物联网入口的主要角色。随着移动端混合开发模式的大发展,市面上物联网app大多都采用了h5+native的混合开发模式。但是h5页面上的一些javascript语法错误和ui兼容性错误,严重时会导致页面白屏,造成极差的用户体验。
[0003]
相关技术中,物联网app上线后,用户在使用物联网app时,有时会遇到一些在测试验收过程中未暴露出来的问题。比如操作物联网设备时,接口响应超时、错误,页面显示白屏等。此类问题往往具有耗费较长时间,而难以复现的特点,使开发者和技术支持人员难以高效率的定位分析问题。物联网app的页面存在问题时,问题的反馈及解决机制主要还是依赖于用户主动反馈,通过售后的渠道进入开发端排查处理,时效性较差,问题还原时间较长,且无法保证还原度。
[0004]
针对相关技术中,在页面存在问题时,需要依赖于用户主动反馈,进而导致问题的反馈时效性较差,问题还原时间较长等问题,尚未提出有效的解决方案。


技术实现要素:

[0005]
本发明实施例提供了一种日志传输方法及装置、存储介质、电子装置,以至少解决相关技术中,在页面存在问题时,需要依赖于用户主动反馈,进而导致问题的反馈时效性较差,问题还原时间较长等问题。
[0006]
根据本发明实施例的一个方面,提供了一种日志传输方法,包括:通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0007]
在一个示例性实施例中,将所述错误日志按照指定存储方式传输至日志数据库,包括:获取所述错误日志对应的第一目标对象的第一标识,其中,所述第一标识用于唯一标识所述第一目标对象;将所述错误日志和所述第一标识进行关联;将关联后的所述错误日志和所述第一标识传输至所述日志数据库。
[0008]
在一个示例性实施例中,将关联后的所述错误日志和所述第一标识传输至所述日志数据库,包括:获取所述错误日志的第二标识,其中,所述第二标识用于唯一标识所述错误日志;将所述第二标识,以及所述错误日志和所述第一标识进行关联;将关联后的第二标识,以及所述错误日志和所述第一标识传输至所述日志数据库。
[0009]
在一个示例性实施例中,将所述错误日志按照指定存储方式传输至日志数据库之后,所述方法还包括:向第二目标对象发送通知信息,以指示所述第二目标对象对所述错误
日志进行分析,其中,所述通知信息用于通知所述第二目标对象所述错误日志已保存在所述目标数据库中。
[0010]
在一个示例性实施例中,将所述错误日志按照指定存储方式传输至日志数据库,包括:确定所述网页日志中是否存在以下错误日志:后端接口错误日志,语法拼写错误日志,native端错误日志;在确定所述网页日志中存在所述错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库。
[0011]
在一个示例性实施例中,将所述错误日志按照指定存储方式传输至日志数据库,包括:通过所述中间件调用服务器接口;通过所述服务器接口将所述错误日志按照指定存储方式传输至日志数据库。
[0012]
根据本发明实施例的另一个方面,还提供了一种日志传输方法的装置,包括:采集模块,用于通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;传输模块,用于在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0013]
在一个示例性实施例中,将所述错误日志按照指定存储方式传输至日志数据库,包括:传输模块,用于获取所述错误日志对应的第一目标对象的第一标识,其中,所述第一标识用于唯一标识所述第一目标对象;将所述错误日志和所述第一标识进行关联;将关联后的所述错误日志和所述第一标识传输至所述日志数据库。
[0014]
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述日志传输方法。
[0015]
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的日志传输方法。
[0016]
在本发明实施例中,通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中,即通过探针对日志进行检测,检测到错误日志后,将错误日志传输至日志数据库,采用上述技术方案,解决了相关技术中,在页面存在问题时,需要依赖于用户主动反馈,进而导致问题的反馈时效性较差,问题还原时间较长等问题,通过对日志进行实时监控,并将错误日志传输至日志数据库,直接查看错误日志、分析错误原因及时解决用户问题。
附图说明
[0017]
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]
图1是本发明实施例的一种日志传输方法的计算机终端的硬件结构框图;
[0019]
图2是根据本发明实施例的日志传输方法的流程图;
[0020]
图3是根据本发明具体实施例的日志传输方法的基础结构图;
[0021]
图4是根据本发明具体实施例的错误日志传输的基本流程图;
[0022]
图5是根据本发明实施例的日志传输装置的结构图。
具体实施方式
[0023]
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0024]
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0025]
本申请实施例所提供的方法实施例可以在计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种日志传输方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,在一个示例性实施例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
[0026]
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的日志传输方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0027]
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0028]
在本实施例中提供了一种日志传输方法,应用于上述计算机终端,图2是根据本发明实施例的日志传输方法的流程图,该流程包括如下步骤:
[0029]
步骤s202,通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;
[0030]
步骤s204,在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0031]
通过上述步骤,通过页面端接收第一目标对象的操作,得到所述操作对应的网页
日志;在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中,即通过探针对日志进行检测,检测到错误日志后,将错误日志传输至日志数据库。采用上述技术方案,解决了相关技术中,在页面存在问题时,需要依赖于用户主动反馈,进而导致问题的反馈时效性较差,问题还原时间较长等问题,通过对日志进行实时监控,并将错误日志传输至日志数据库,直接查看错误日志、分析错误原因及时解决用户问题。
[0032]
在本发明一个实施例中,将所述错误日志按照指定存储方式传输至日志数据库之前,需要确定所述网页日志中是否存在以下错误日志:后端接口错误日志,语法拼写错误日志,native端错误日志;在确定所述网页日志中存在所述错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库。
[0033]
也就是说,确定网页日志存在后端接口错误日志,语法拼写错误日志,native端错误日志中一个或多个,此时,将错误日志按照指定存储方式传输至日志数据库。需要说明的是,后端接口错误日志为服务不可用导致的错误、因业务数据处理未考虑异常情况而导致的错误产生的日志;语法拼写错误日志为javascript错误日志,例如:uncaught typeerror:cannot read property、typeerror:

undefined’is not an object、typeerror:null is not an object;native端错误日志是智能手机本地操作系统如ios、android错误产生的日志。
[0034]
为了更加准确的分析日志,还需要将操作数据指定存储方式传输至日志数据库。操作数据包括:h5页面操作:点击事件、页面滑动;页面跳转;ajax网络请求等操作产生的数据。本发明实施例对此不做限定,只要是第一目标对象操作产生的操作数据都可以。
[0035]
将所述错误日志按照指定存储方式传输至日志数据库,可以有多种实现方式,在本发明实施例中,获取所述错误日志对应的第一目标对象的第一标识,其中,所述第一标识用于唯一标识所述第一目标对象;将所述错误日志和所述第一标识进行关联;将关联后的所述错误日志和所述第一标识传输至所述日志数据库。
[0036]
也可以说,为了将错误日志传输至日志数据库,需要将错误日志对应的第一目标对象的第一标识和错误日志进行关联,经过关联,查看错误日志时,可以准确地了解到第一对象对页面端进行操作时,发生了错误。需要说明的是,第一目标对象的第一标识是唯一的,唯一指示第一目标对象。
[0037]
将错误日志对应的第一目标对象的第一标识和错误日志进行关联的同时,需要获取所述错误日志的第二标识,其中,所述第二标识用于唯一标识所述错误日志;将所述第二标识,以及所述错误日志和所述第一标识进行关联;将关联后的第二标识,以及所述错误日志和所述第一标识传输至所述日志数据库。
[0038]
也可以说,最终传输至日志数据库的是,关联后的第二标识,以及所述错误日志和所述第一标识,进而根据第二标识,以及错误日志和第一标识其中之一,就可以得到关联的所有信息,简而言之,错误日志的指定存储方式为将错误日志对应的第一目标对象的第一标识,错误日志的第二标识以及错误日志进行关联。
[0039]
为了提醒第二目标对象处理错误日志对应的问题,将所述错误日志按照指定存储方式传输至日志数据库之后,向第二目标对象发送通知信息,以指示所述第二目标对象对所述错误日志进行分析,其中,所述通知信息用于通知所述第二目标对象所述错误日志已
保存在所述目标数据库中。
[0040]
将所述错误日志按照指定存储方式传输至日志数据库时,需要通过所述中间件调用服务器接口;通过所述服务器接口将所述错误日志按照指定存储方式传输至日志数据库。
[0041]
为了更好的理解上述日志传输方法的过程,以下再结合可选实施例对上述日志传输方法流程进行说明,但不用于限定本发明实施例的技术方案。
[0042]
具体实施例一:
[0043]
图3是根据本发明具体实施例的日志传输方法的基础结构图,如图3所示,日志传输方法的基础结构主要分为五部分:h5端(相当于上述实施例中的移动端)、中间件、native、server(相当于上述实施例中的服务器)、database(相当于上述实施例中的日志数据库)。具体步骤如下:
[0044]
步骤1:h5端向中间件发送调用初始化、查询接口数据;
[0045]
步骤2:中间件向native发送查询设备基本信息数据;
[0046]
步骤3:native向server发送请求;
[0047]
步骤4:server向database发送查询数据库请求;
[0048]
步骤5:database将查询到的数据返回至server;
[0049]
步骤6:server整理数据并返回至native;
[0050]
步骤7:native将查询数据返回至中间件;
[0051]
步骤8:中间件将数据进行封装并返回至h5;
[0052]
步骤9:h5自行处理业务;
[0053]
步骤10:javascript错误,触发日志上报至中间件;
[0054]
步骤11:中间件整理错误日志并发送至native;
[0055]
步骤12:native向server发送请求,调用server接口;
[0056]
步骤13:server向database发送将错误日志写入数据库请求;
[0057]
步骤14:database将错误日志写入数据库;
[0058]
步骤15:网络请求出现错误,触发日志上报至中间件;
[0059]
步骤16:执行上述步骤11-14。
[0060]
在本发明具体实施例中,中间件是承接h5与native的桥梁。中间件埋入捕获错误日志的探针,这使得h5端只要集成了中间件后,便可以实现无感接入监控系统。
[0061]
具体实施例二:
[0062]
图4是根据本发明具体实施例的错误日志传输的基本流程,如图4所示,具体步骤如下:
[0063]
s401:用户使用物联网app操作物联网设备;
[0064]
s402:检查用户使用物联网app操作物联网设备时是否出现错误;
[0065]
s403:若用户使用物联网app操作物联网设备时没有出现错误,则物联网设备会成功响应,执行用户的操作指令;
[0066]
s404:若用户使用物联网app操作物联网设备时出现了错误,例如,api接口请求错误或javascript错误;调用中间件,中间件主动捕获错误日志,将错误日志进行整理;
[0067]
s405:调用server接口,将错误日志传输至日志数据库;
[0068]
s406:数据库按照<id.data>方式存储错误日志;
[0069]
s407:通知相关开发者以及技术支持人员,及时处理问题。
[0070]
需要说明的是,处理问题方法为排查、定位、解决问题。
[0071]
将错误日志传输至日志数据库时,首先需要定义日志上报的数据结构,在定义数据结构时,需要考虑到日志与用户的对应关系,在设计日志表结构时,应该将用户的userid作为外键进行关联,主键_id使用uuid来保证唯一性。具体数据结构如下:
[0072]
日志数据结构:
[0073]
{
[0074]
_id:uuid//主键,日志的唯一标示
[0075]
userid:xxxxxxxx//外键,用户的唯一标示
[0076]
ip:xxxxxxx//ip地址
[0077]
clientid:xxxxxxxx//客户端唯一标示
[0078]
resourcename:xxxxxxxx//h5资源包名
[0079]
tag:xxxxxx//h5资源包tag号
[0080]
type:xxxxxxx//引起错误的类型(例如:api接口错误、javascript错误)
[0081]
content:xxxxxxx//具体的错误内容
[0082]
}。
[0083]
本发明具体实施例通过采集h5错误日志,存储分析错误日志数据的方式,对物联网app使用中出现的用户使用问题,进行实时监控,实时监控h5端日志,让开发者和技术支持人员,快速追踪定位到物联网app上线后的市场应用问题并及时解决,避免用户发现问题、反馈问题、开发者复现定位问题这种传统模式的弊端,实现高效、全面对物联网app上线以后的优化和改进;同时开发者可以从中吸取经验,有利于不断提升物联网app的用户体验。
[0084]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
[0085]
在本实施例中还提供了一种日志传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0086]
图5是根据本发明实施例的日志传输装置的结构框图;如图5所示,包括:
[0087]
采集模块52:用于通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;
[0088]
传输模块54:用于在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0089]
通过上述模块,通过页面端接收第一目标对象的操作,得到所述操作对应的网页
日志;在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中,即通过探针对日志进行检测,检测到错误日志后,将错误日志传输至日志数据库。解决了相关技术中,在页面存在问题时,需要依赖于用户主动反馈,进而导致问题的反馈时效性较差,问题还原时间较长等问题。
[0090]
将所述错误日志按照指定存储方式传输至日志数据库之前,采集模块还需要确定所述网页日志中是否存在以下错误日志:后端接口错误日志,语法拼写错误日志,native端错误日志;在确定所述网页日志中存在所述错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库。
[0091]
也就是说,确定网页日志存在后端接口错误日志,语法拼写错误日志,native端错误日志中一个或多个,此时,将错误日志按照指定存储方式传输至日志数据库。需要说明的是,后端接口错误日志为服务不可用导致的错误、因业务数据处理未考虑异常情况而导致的错误产生的日志;语法拼写错误日志为javascript错误日志,例如:uncaught typeerror:cannot read property、typeerror:

undefined’is not an object、typeerror:null is not an object;native端错误日志是智能手机本地操作系统如ios、android错误产生的日志。
[0092]
为了更加准确的分析日志,采集模块采集第一目标对象的操作数据,传输模块将操作数据按照指定存储方式传输至日志数据库。操作数据包括:h5页面操作:点击事件、页面滑动;页面跳转;ajax网络请求等操作产生的数据。本发明实施例对此不做限定,只要是第一目标对象操作产生的操作数据都可以。
[0093]
传输模块,还用于获取所述错误日志对应的第一目标对象的第一标识,其中,所述第一标识用于唯一标识所述第一目标对象;将所述错误日志和所述第一标识进行关联;将关联后的所述错误日志和所述第一标识传输至所述日志数据库。
[0094]
也可以说,为了将错误日志传输至日志数据库,采集模块需要将错误日志对应的第一目标对象的第一标识和错误日志进行关联,经过关联,查看错误日志时,可以准确地了解到第一对象对页面端进行操作时,发生了错误。需要说明的是,第一目标对象的第一标识是唯一的,唯一指示第一目标对象。
[0095]
采集模块,还用于将错误日志对应的第一目标对象的第一标识和错误日志进行关联的同时,需要获取所述错误日志的第二标识,其中,所述第二标识用于唯一标识所述错误日志;将所述第二标识,以及所述错误日志和所述第一标识进行关联;将关联后的第二标识,以及所述错误日志和所述第一标识传输至所述日志数据库。
[0096]
也可以说,最终传输至日志数据库的是,关联后的第二标识,以及所述错误日志和所述第一标识,进而根据第二标识,以及错误日志和第一标识其中之一,就可以得到关联的所有信息,简而言之,错误日志的指定存储方式为将错误日志对应的第一目标对象的第一标识,错误日志的第二标识以及错误日志进行关联。
[0097]
本发明实施例的日志传输装置还包括通知模块,用于将所述错误日志按照指定存储方式传输至日志数据库之后,向第二目标对象发送通知信息,以指示所述第二目标对象对所述错误日志进行分析,其中,所述通知信息用于通知所述第二目标对象所述错误日志已保存在所述目标数据库中。
[0098]
为了指示第二目标对象及时对错误日志进行分析,在将错误日志传输到日志数据库之后,通知模块向第二目标对象发送通知信息,第二目标对象及时处理问题,处理问题方法为排查、定位、解决问题。
[0099]
传输模块,还用与与将所述错误日志按照指定存储方式传输至日志数据库时,需要通过所述中间件调用服务器接口;通过所述服务器接口将所述错误日志按照指定存储方式传输至日志数据库。
[0100]
简而言之,错误日志不能直接传输至日志数据库,需要通过中间件调用服务器接口,进而通过服务器接口将错误日志按照指定存储方式传输至日志数据库。
[0101]
本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
[0102]
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
[0103]
s1,通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;
[0104]
s2,在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0105]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0106]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0107]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0108]
s1,通过页面端接收第一目标对象的操作,得到所述操作对应的网页日志;
[0109]
s2,在通过探针检测到所述网页日志中存在错误日志的情况下,将所述错误日志按照指定存储方式传输至日志数据库,其中,所述探针设置在中间件中。
[0110]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0111]
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0112]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0113]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1