这是我第一次使用 Genexus,我想知道如何创建日志功能。
我创建了一个事务对象“日志”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表。
我怎样才能做到这一点?最好的方法是什么?
我会很感激任何帮助。谢谢!
这是我第一次使用 Genexus,我想知道如何创建日志功能。
我创建了一个事务对象“日志”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表。
我怎样才能做到这一点?最好的方法是什么?
我会很感激任何帮助。谢谢!
您需要定义一个包含要记录的信息的过程,例如logAdd
如果它是一个 web 应用程序,您可以从 websession 中提取用户,如果它是一个 win 应用程序,您需要在 parms 上传递它。
然后在每个事务的 BeforeComplete 上调用该过程。
网页示例:
logAdd.Call(&Pgmname, "Clients", CliId.ToString(), &Mode) on BeforeComplete;
该logAdd
过程具有Commit on exit
in 的属性很重要false
。这样,只有在确认交易后才会记录信息。
更新 - 在您的日志记录过程中获取旧值
要获取交易的先前值,您可以利用业务组件。将您的交易设置为 a 后,您对交易设置Bussiness Component
以下规则:
[WEB] {
&Clients.load(CliId) if update on BeforeValidate;
logClients.Call(CliId, &Clients, &Mode) on BeforeComplete;
}
&Clients
是一个基于您的业务组件类型的变量。
您可以通过prc:logClients
访问所有旧值&Clients.Att.GetOldValue()
,并通过常规访问新值For Each