2、系统日志功能确实是打开了,我关闭了还是不行??
关闭了还不行么?那不应该的
AddSystemLog这个函数的写法确实是cSQL = 'select * from TSysLog。。不过这个的改进方法不是旧版本的么?新版本怎么改进?(我以前用久版本的时候和你沟通过,是通过加长日志表的字段来改进)??我们的版本是3088
不是这样的改进,是按下面的改
AddSystemLog函数为下面这样
static procedure TSystemCore.AddSystemLog(AContext: TContext;AType, ADescription: string);
const
cSQL = 'insert into TSYSLOG(FTYPE, FDESCRIPTION, FCOMPUTER, FGUID, '+
' FDATE, FTIME, FUSER, FUSERCaption,'+
' FSTATION, FDEPT, FURL, FSTATIONCation, FDEPTCation) ' +
'values(''%s'', ''%s'', ''%s'', ''%s'', '+
':t1, :t2,''%s'',''%s'','+
'''%s'',''%s'',''%s'',''%s'',''%s'')';
var
lQuery: TQuery;
lComputerIP: string;
IsSystemManager: Boolean;
lOperatorPosition: TOperatorPosition;
begin
if not TSettingLib.GetDefaultConfig.RecordSystemLog or not (SysUtils.AnsiPos('SYSTEM', TSettingLib.GetDefaultConfig.SystemLogKinds) > 0) then
Exit;
lOperatorPosition := TContextUtils.FindOperatorPosition(AContext);
if (lOperatorPosition = nil) and not Opr.IsSystemManager(TSystemCore.Operator.ID) then
lOperatorPosition := TSystemCore.Operator.DefaultPosition;
lComputerIP := '计算机名:'+ JSSysUtils.GetComputerName + '('+ JSSysUtils.GetLocalIPStr+ ')';
lQuery := TQuery.Create(AContext.Owner);
try
lQuery.ConnectionString := cSysDatabaseConnectionString;
if Opr.IsSystemManager(TSystemCore.Operator.ID) then
lQuery.CommandText := SysUtils.Format(cSQL,[AType, ADESCRIPTION, lComputerIP, jsCommon.CreateGUIDStr, 'System', '系统管理员' ,'','','','',''])
else
lQuery.CommandText := SysUtils.Format(cSQL, [AType, ADESCRIPTION, lComputerIP, jsCommon.CreateGUIDStr,
TSystemCore.Operator.ID, TSystemCore.Operator.DisplayName , lOperatorPosition.PositionID,
lOperatorPosition.DeptID, lOperatorPosition.PersonMember.BizURL.URL,
lOperatorPosition.Position.DisplayName ,lOperatorPosition.PersonMember.Parent.Parent.DisplayName]);
with lQuery do
begin
Close;
Params.ParamByName('t1').AsDate := SysSrv.SysService.Time;
Params.ParamByName('t2').AsDateTime := SysSrv.SysService.Time;
Execute;
end;
finally
lQuery.Free;
end;
end; |