一种本地代码日志输出到Java端日志文件的方法技术

技术编号:30639555 阅读:23 留言:0更新日期:2021-11-04 00:31
本发明专利技术公开了一种本地代码日志输出到Java端日志文件的方法,Java端声明一日志输出接口,其包含唯一的日志输出方法,用于C/C++端回调而实现日志输出功能;C/C++端声明函数指针和用于保存和调用Java端传递来的日志输出方法的函数指针变量;Java端创建日志输出接口的实现对象,JNA将日志输出方法转换为函数指针传递给C/C++端并保存于函数指针变量中;通过函数指针传入日志信息,调用Java端日志输出方法,将本地代码日志输出到Java端的日志文件中;本发明专利技术基于JNA框架,通过C/C++端代码回调Java端方法,借助Java端输出日志,将日志信息记录到同一个日志文件中。记录到同一个日志文件中。记录到同一个日志文件中。

【技术实现步骤摘要】
一种本地代码日志输出到Java端日志文件的方法


[0001]本专利技术属于计算机及
,具体地说,是涉及一种本地代码日志输出到Java端日志文件的方法。

技术介绍

[0002]在一些Java应用中,需要编写一部分本地代码(C/C++)配合完成必要的工作。
[0003]代码的执行情况可以通过输出日志进行记录,方便查找关键信息和后续快速定位解决问题。但是只能生成两份日志文件,后续查看日志需要同时对比两个文件,为问题的查找解决带来了困难。

技术实现思路

[0004]本专利技术的目的在于提供一种本地代码日志输出到Java端日志文件的方法,基于JNA(Java Native Access)框架,通过C/C++端代码回调Java端方法,借助Java端输出日志,从而将日志信息记录到同一个日志文件中,提高了后续查看日志解决问题的效率。
[0005]本专利技术采用以下技术方案予以实现:提出一种本地代码日志输出到Java端日志文件的方法,包括:Java端声明日志输出接口,所述日志输出接口包含唯一的日志输出方法;所述日志输出方法用于被本地C/C++端回调而实现日志输出功能;C/C++端声明一函数指针和一用于保存和调用Java端传递来的日志输出方法的函数指针变量;Java端创建所述日志输出接口的实现对象,通过JNA将所述日志输出方法转换为函数指针传递给C/C++端并保存于所述函数指针变量中;C/C++端通过所述函数指针调用Java端的所述日志输出方法,将本地代码日志输出到Java端的日志文件中。
[0006]进一步的,所述方法还包括:Java端声明日志输出接口时,还声明一个至少包含一个接口传递方法的JNA交互接口,所述接口传递方法用于通过JNA向本地代码C/C++端传递所述日志输出接口。
[0007]进一步的,所述方法还包括:C/C++端声明所述函数指针变量时,定义一个用于初始化所述函数指针变量的接收函数,所述接收函数将其参数赋值给所述函数指针变量,从而保存Java端通过JNA传递到C/C++端的日志输出方法。
[0008]进一步的,所述方法还包括:Java端创建所述日志输出接口的实现对象,调用所述接口传递方法,将所述实现对象作为参数传入;通过JNA调用C/C++端的所述接收函数,将所述日志输出方法保存在C/C++端本地端。
[0009]与现有技术相比,本专利技术的优点和积极效果是:本专利技术提出的本地代码日志输出到Java端日志文件的方法中,Java端声明一个日志输出接口,该日志输出接口包含唯一的日志输出方法,该日志输出方法用于被本地C/C++端回调而实现日志输出功能;C/C++端声明一函数指针和一用于保存和调用Java端传递来的日志输出方法的函数指针变量;Java端创建日志输出接口的实现对象,通过JNA将日志输出方法转换为函数指针传递给C/C++端并
保存于所述函数指针变量中;C/C++端在需要输出日志时,通过函数指针传入日志信息,调用Java端的日志输出方法,将本地代码日志输出到Java端的日志文件中;本专利技术基于JNA框架,通过C/C++端代码回调Java端日志输出方法,借助Java端输出日志,从而将日志信息记录到同一个日志文件中,提高了后续查看日志解决问题的效率。
[0010]结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其他特点和优点将变得更加清楚。
附图说明
[0011]图1 为本专利技术提出的本地代码日志输出到Java端日志文件的方法流程图;图2为本专利技术实施例中Java端与C/C++端程序示意图。
具体实施方式
[0012]下面结合附图对本专利技术的具体实施方式作进一步详细的说明。
[0013]如图1所示,本专利技术提出的本地代码日志输出到Java端日志文件的方法,包括:步骤S1:Java端声明日志输出接口,其包含唯一的日志输出方法。
[0014]Java端声明继承自com.sun.jna.Callback的日志输出接口,该日志输出接口包含唯一的日志输出方法,该日志输出方法用于被本地代码C/C++端回调,进而实现日志输出的功能,其参数为日志相关信息。
[0015]同时,Java端声明继承自com.sun.jna.Library的JNA交互接口,该JNA交互接口至少包含一个接口传递方法,该接口传递方法用于通过JNA向本地代码C/C++段传递上述日志输出接口的实现对象,该接口传递方法的参数为上述的日志输出接口。
[0016]步骤S2:C/C++端声明一函数指针和一用于保存和调用Java端传递来的日志输出方法的函数指针变量。
[0017]声明一个函数指针,用于调用Java端日志输出方法,其参数和返回值与上述的日志输出方法对应,对应规则可以参照JNA默认类型映射。
[0018]声明一个函数指针变量,用于保存和调用Java端传递来的日志输出方法。
[0019]C/C++端声明该函数指针变量时,定义一个用于初始化该函数指针变量的接收函数,该接收函数的函数名与上述的接口传递方法相同,参数类型为上述的函数指针。该接收函数将其参数赋值给函数指针变量,从而保存Java端通过JNA传递到C/C++端的日志输出方法。
[0020]步骤S3:Java端创建日志输出接口的实现对象,通过JNA将日志输出方法转换为函数指针传递给C/C++端并保存于函数指针变量中。
[0021]Java端创建日志输出接口的实现对象,调用上述接口传递方法将实现对象作为参数传入。
[0022]JNA将Java端传递的实现对象转换为函数指针传递给本地代码端,C/C++端通过上述的接收函数将JNA传递至本地C/C++端的函数指针保存在上述的函数指针变量中。
[0023]步骤S4:C/C++端通过函数指针调用Java端输出日志方法,将本地代码日志输出到Java端的日志文件中。
[0024]结合图2所示,本专利技术对提出的本地代码日志输出到Java端日志文件的方法给出
一个具体的实施例。
[0025]本实施例中,运行平台为Windows7,Java端日志输出框架采用Log4j,本地代码端采用C/C++语言开发,编译为.dll文件。
[0026]1)Java端声明日志输出接口。
[0027]该日志输出接口继承自com.sun.jna.Callback,包含唯一的日志输出方法,该日志输出方法的参数为日志信息等级与日志具体内容,返回值为空。
[0028]2)Java端声明JNA交互接口。
[0029]该JNA交互接口继承自com.sun.jna.Library,在该JNA交互接口中声明接口传递方法,用于将1)中声明的日志输出接口通过JNA传递给C/C++端代码,参数为日志输出接口。
[0030]3)C/C++端声明一个函数指针类型,参数为日志信息等级与日志具体内容,其返回值为空。以及,声明一个上述类型的全局变量,用于保存和调用Java端传递来的日志输出方法。
[0031]4)C/C++端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种本地代码日志输出到Java端日志文件的方法,其特征在于,包括:Java端声明日志输出接口,所述日志输出接口包含唯一的日志输出方法;所述日志输出方法用于被本地C/C++端回调而实现日志输出功能;C/C++端声明一函数指针和一用于保存和调用Java端传递来的日志输出方法的函数指针变量;Java端创建所述日志输出接口的实现对象,通过JNA将所述日志输出方法转换为函数指针传递给C/C++端并保存于所述函数指针变量中;C/C++端通过所述函数指针调用Java端的所述日志输出方法,将本地代码日志输出到Java端的日志文件中。2.根据权利要求1所述的本地代码日志输出到Java端日志文件的方法,其特征在于,所述方法还包括:Java端声明日志输出接口时,还声明一个至少包含一个...

【专利技术属性】
技术研发人员:张余超郭允
申请(专利权)人:青岛本原微电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1