|
- package com.netsdk.demo.module;
-
- import com.netsdk.lib.NetSDKLib;
- import com.netsdk.lib.ToolKits;
- import com.netsdk.lib.enumeration.DH_LOG_QUERY_TYPE;
- import com.netsdk.lib.structure.DH_DEVICE_LOG_ITEM_EX;
- import com.netsdk.lib.structure.NET_TIME;
- import com.netsdk.lib.structure.QUERY_DEVICE_LOG_PARAM;
- import com.sun.jna.Memory;
- import com.sun.jna.Pointer;
- import com.sun.jna.ptr.IntByReference;
-
- import java.nio.charset.Charset;
-
- public class DeviceLogModule {
-
- public static DH_DEVICE_LOG_ITEM_EX[] getSystemLog(NET_TIME startTime,NET_TIME endTime){
- //查询条件,作为入参
- QUERY_DEVICE_LOG_PARAM param=new QUERY_DEVICE_LOG_PARAM();
- //要查询的日志类型
- param.emLogType= DH_LOG_QUERY_TYPE.DHLOG_ALL.ordinal();
-
- //通道号
- param.nChannelID=0;
- //开始查询的条数
- param.nStartNum=0;
- //结束查询的条数,30-1+1=30,查询的条数是30条
- param.nEndNum=1024;
- int logNum=param.nEndNum-param.nStartNum+1;
- //日志数据结构体类型,写0 c层可能校验不通过,建议写1,使用DH_DEVICE_LOG_ITEM_EX作为日志数据的结构体,
- // 因为c层对出参buffer长度的校验是以DH_DEVICE_LOG_ITEM_EX结构体长度来校验的
- // 而DH_DEVICE_LOG_ITEM_EX结构体的长度比DH_DEVICE_LOG_ITEM结构体要长得多
- param.nLogStuType=1;
- //要查询的起始时间段
- param.stuStartTime= startTime;
- //要查询的结束时间段
- param.stuEndTime= endTime;
-
- //入参
- Pointer queryParam=new Memory(param.size());
- ToolKits.SetStructDataToPointer(param,queryParam,0);
- //日志数据结构体
- DH_DEVICE_LOG_ITEM_EX logBuffer=new DH_DEVICE_LOG_ITEM_EX();
- int totalSize = logBuffer.size() * logNum;
- //出参,分配内存
- Pointer pointer=new Memory(totalSize);
- pointer.clear(totalSize);
- //出参,查询到的日志条数
- IntByReference relogNum = new IntByReference(1);
- boolean bSet=LoginModule.netsdk.CLIENT_QueryDeviceLog(LoginModule.m_hLoginHandle,queryParam,pointer,totalSize,relogNum,3000);
- System.out.println("get system log is:"+bSet);
- if(bSet){
- System.out.println("返回的log 条数:"+relogNum.getValue());
- if(relogNum.getValue()>0){
- DH_DEVICE_LOG_ITEM_EX[] arrays=(DH_DEVICE_LOG_ITEM_EX[])new DH_DEVICE_LOG_ITEM_EX().toArray(relogNum.getValue());
- ToolKits.GetPointerDataToStructArr(pointer,arrays);
- for(DH_DEVICE_LOG_ITEM_EX item:arrays){
- String time=item.getDate();
- String operator=item.getOperator(Charset.forName("GBK")).trim();
- String operation=item.getOperation(Charset.forName("GBK")).trim();
- String log=item.getLog(Charset.forName("GBK")).trim();
- String detailLog=item.getDetailLog(Charset.forName("GBK")).trim();
- System.out.println(time+","+operator+","+operation+","+log+","+detailLog+",日志类型:"+item.nLogType);
- }
- return arrays;
- }
- }else{
- System.out.println("get log error: the error code is "+ToolKits.getErrorCodePrint());
- }
-
- return null;
- }
-
- public static DH_DEVICE_LOG_ITEM_EX[] getSystemLogV2(NetSDKLib.LLong m_hLoginHandle, NET_TIME startTime, NET_TIME endTime){
- //查询条件,作为入参
- QUERY_DEVICE_LOG_PARAM param=new QUERY_DEVICE_LOG_PARAM();
- //要查询的日志类型
- param.emLogType= DH_LOG_QUERY_TYPE.DHLOG_ALL.ordinal();
-
- //通道号
- param.nChannelID=0;
- //开始查询的条数
- param.nStartNum=0;
- //结束查询的条数,30-1+1=30,查询的条数是30条
- param.nEndNum=1024;
- int logNum=param.nEndNum-param.nStartNum+1;
- //日志数据结构体类型,写0 c层可能校验不通过,建议写1,使用DH_DEVICE_LOG_ITEM_EX作为日志数据的结构体,
- // 因为c层对出参buffer长度的校验是以DH_DEVICE_LOG_ITEM_EX结构体长度来校验的
- // 而DH_DEVICE_LOG_ITEM_EX结构体的长度比DH_DEVICE_LOG_ITEM结构体要长得多
- param.nLogStuType=1;
- //要查询的起始时间段
- param.stuStartTime= startTime;
- //要查询的结束时间段
- param.stuEndTime= endTime;
-
- //入参
- Pointer queryParam=new Memory(param.size());
- ToolKits.SetStructDataToPointer(param,queryParam,0);
- //日志数据结构体
- DH_DEVICE_LOG_ITEM_EX logBuffer=new DH_DEVICE_LOG_ITEM_EX();
- int totalSize = logBuffer.size() * logNum;
- //出参,分配内存
- Pointer pointer=new Memory(totalSize);
- pointer.clear(totalSize);
- //出参,查询到的日志条数
- IntByReference relogNum = new IntByReference(1);
- boolean bSet=LoginModule.netsdk.CLIENT_QueryDeviceLog(m_hLoginHandle,queryParam,pointer,totalSize,relogNum,3000);
- System.out.println("get system log is:"+bSet);
- if(bSet){
- System.out.println("返回的log 条数:"+relogNum.getValue());
- if(relogNum.getValue()>0){
- DH_DEVICE_LOG_ITEM_EX[] arrays=(DH_DEVICE_LOG_ITEM_EX[])new DH_DEVICE_LOG_ITEM_EX().toArray(relogNum.getValue());
- ToolKits.GetPointerDataToStructArr(pointer,arrays);
- for(DH_DEVICE_LOG_ITEM_EX item:arrays){
- String time=item.getDate();
- String operator=item.getOperator(Charset.forName("GBK")).trim();
- String operation=item.getOperation(Charset.forName("GBK")).trim();
- String log=item.getLog(Charset.forName("GBK")).trim();
- String detailLog=item.getDetailLog(Charset.forName("GBK")).trim();
- System.out.println(time+","+operator+","+operation+","+log+","+detailLog+",日志类型:"+item.nLogType);
- }
- return arrays;
- }
- }else{
- System.out.println("get log error: the error code is "+ToolKits.getErrorCodePrint());
- }
-
- return null;
- }
- }
|