一种本地代码日志输出到Java端日志文件的方法与流程

文档序号:27220496发布日期:2021-11-03 16:24阅读:238来源:国知局
一种本地代码日志输出到Java端日志文件的方法与流程
一种本地代码日志输出到java端日志文件的方法
技术领域
1.本发明属于计算机及技术领域,具体地说,是涉及一种本地代码日志输出到java端日志文件的方法。


背景技术:

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


技术实现要素:

4.本发明的目的在于提供一种本地代码日志输出到java端日志文件的方法,基于jna(java native access)框架,通过c/c++端代码回调java端方法,借助java端输出日志,从而将日志信息记录到同一个日志文件中,提高了后续查看日志解决问题的效率。
5.本发明采用以下技术方案予以实现:提出一种本地代码日志输出到java端日志文件的方法,包括:java端声明日志输出接口,所述日志输出接口包含唯一的日志输出方法;所述日志输出方法用于被本地c/c++端回调而实现日志输出功能;c/c++端声明一函数指针和一用于保存和调用java端传递来的日志输出方法的函数指针变量;java端创建所述日志输出接口的实现对象,通过jna将所述日志输出方法转换为函数指针传递给c/c++端并保存于所述函数指针变量中;c/c++端通过所述函数指针调用java端的所述日志输出方法,将本地代码日志输出到java端的日志文件中。
6.进一步的,所述方法还包括:java端声明日志输出接口时,还声明一个至少包含一个接口传递方法的jna交互接口,所述接口传递方法用于通过jna向本地代码c/c++端传递所述日志输出接口。
7.进一步的,所述方法还包括:c/c++端声明所述函数指针变量时,定义一个用于初始化所述函数指针变量的接收函数,所述接收函数将其参数赋值给所述函数指针变量,从而保存java端通过jna传递到c/c++端的日志输出方法。
8.进一步的,所述方法还包括:java端创建所述日志输出接口的实现对象,调用所述接口传递方法,将所述实现对象作为参数传入;通过jna调用c/c++端的所述接收函数,将所述日志输出方法保存在c/c++端本地端。
9.与现有技术相比,本发明的优点和积极效果是:本发明提出的本地代码日志输出到java端日志文件的方法中,java端声明一个日志输出接口,该日志输出接口包含唯一的日志输出方法,该日志输出方法用于被本地c/c++端回调而实现日志输出功能;c/c++端声明一函数指针和一用于保存和调用java端传递来的日志输出方法的函数指针变量;java端创建日志输出接口的实现对象,通过jna将日志输出方法转换为函数指针传递给c/c++端并
保存于所述函数指针变量中;c/c++端在需要输出日志时,通过函数指针传入日志信息,调用java端的日志输出方法,将本地代码日志输出到java端的日志文件中;本发明基于jna框架,通过c/c++端代码回调java端日志输出方法,借助java端输出日志,从而将日志信息记录到同一个日志文件中,提高了后续查看日志解决问题的效率。
10.结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
11.图1 为本发明提出的本地代码日志输出到java端日志文件的方法流程图;图2为本发明实施例中java端与c/c++端程序示意图。
具体实施方式
12.下面结合附图对本发明的具体实施方式作进一步详细的说明。
13.如图1所示,本发明提出的本地代码日志输出到java端日志文件的方法,包括:步骤s1:java端声明日志输出接口,其包含唯一的日志输出方法。
14.java端声明继承自com.sun.jna.callback的日志输出接口,该日志输出接口包含唯一的日志输出方法,该日志输出方法用于被本地代码c/c++端回调,进而实现日志输出的功能,其参数为日志相关信息。
15.同时,java端声明继承自com.sun.jna.library的jna交互接口,该jna交互接口至少包含一个接口传递方法,该接口传递方法用于通过jna向本地代码c/c++段传递上述日志输出接口的实现对象,该接口传递方法的参数为上述的日志输出接口。
16.步骤s2:c/c++端声明一函数指针和一用于保存和调用java端传递来的日志输出方法的函数指针变量。
17.声明一个函数指针,用于调用java端日志输出方法,其参数和返回值与上述的日志输出方法对应,对应规则可以参照jna默认类型映射。
18.声明一个函数指针变量,用于保存和调用java端传递来的日志输出方法。
19.c/c++端声明该函数指针变量时,定义一个用于初始化该函数指针变量的接收函数,该接收函数的函数名与上述的接口传递方法相同,参数类型为上述的函数指针。该接收函数将其参数赋值给函数指针变量,从而保存java端通过jna传递到c/c++端的日志输出方法。
20.步骤s3:java端创建日志输出接口的实现对象,通过jna将日志输出方法转换为函数指针传递给c/c++端并保存于函数指针变量中。
21.java端创建日志输出接口的实现对象,调用上述接口传递方法将实现对象作为参数传入。
22.jna将java端传递的实现对象转换为函数指针传递给本地代码端,c/c++端通过上述的接收函数将jna传递至本地c/c++端的函数指针保存在上述的函数指针变量中。
23.步骤s4:c/c++端通过函数指针调用java端输出日志方法,将本地代码日志输出到java端的日志文件中。
24.结合图2所示,本发明对提出的本地代码日志输出到java端日志文件的方法给出
一个具体的实施例。
25.本实施例中,运行平台为windows7,java端日志输出框架采用log4j,本地代码端采用c/c++语言开发,编译为.dll文件。
26.1)java端声明日志输出接口。
27.该日志输出接口继承自com.sun.jna.callback,包含唯一的日志输出方法,该日志输出方法的参数为日志信息等级与日志具体内容,返回值为空。
28.2)java端声明jna交互接口。
29.该jna交互接口继承自com.sun.jna.library,在该jna交互接口中声明接口传递方法,用于将1)中声明的日志输出接口通过jna传递给c/c++端代码,参数为日志输出接口。
30.3)c/c++端声明一个函数指针类型,参数为日志信息等级与日志具体内容,其返回值为空。以及,声明一个上述类型的全局变量,用于保存和调用java端传递来的日志输出方法。
31.4)c/c++端定义一个接收函数,用于初始化3)中声明的函数指针变量,其函数名与2)中的接口传递方法相同,参数类型为3)中的函数指针,在该接收函数中,将参数赋值给3)中声明的全局变量。
32.5)java端创建实现1)中日志输出接口的匿名类,在日志输出方法中通过log4j框架将日志信息输出到.log日志文件中,调用2)中的接口传递方法,上述匿名类作为其参数,通过jna调用4)中的接收函数,将日志输出方法保存在本地端。
33.6)在c/c++端需要进行日志输出时,判断函数指针不为空,传入日志信息等级与日志具体内容作为参数,通过函数指针调用java端输出日志方法,从而将日志输出到java端的日志文件中。
34.应该指出的是,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1