Simon.Sun 发表于 2022-9-7 08:47:35

活字格8.0 update1新功能解密:三十二、活字格服务端日志模块

本帖最后由 Joe.xu 于 2022-9-8 08:51 编辑

一、总览上篇介绍到活字格 8.0 update1 服务端日志增强,这里将继续对日志模块进行介绍。服务器的日志以日志模块为粒度分条记录,日志模块目前有:异常日志、HTTP 请求日志、HTTP 响应日志、登录日志、登出日志、审计日志、SQL 执行日志、计划任务执行日志、服务端命令执行日志、忘记密码操作日志、发送邮件日志、结果日志。其中审计日志、SQL 执行日志、计划任务执行日志、服务端命令执行日志者四个日志模块仅支持活字格应用,活字格管理控制台则没有这四个模块的配置。日志模块有以下特征:
[*]不同的日志信息类型在不同的日志模块;
[*]每个日志模块的类型具有自己的属性;
[*]用户可以通过更改日志配置来启用/禁用日志特定的日志类型(模块);
[*]用户也可以启用/禁用模块类型的特定属性;
[*]大多数模块都有一个名为 RequestId 的属性。具有相同请求 ID 日志记录意味着来自同一个请求操作,用户可以通过 RequestId 来检查和某次请求相关的日志项。
二、日志模块
2.1. 异常日志当应用运行时抛出一个异常时,异常日志将被记录。通过异常日志,用户可以检查应用程序内发生了什么错误。通过异常详细信息,用户可以知道异常发生时的调用堆栈。如果在短时间内出现了很多异常,用户应该修改应用程序来改进它。异常模块日志有下面这些属性:
[*]请求路径:如果日志是在 HTTP 请求中生成的,则此属性将包含 HTTP 请求路径,否则为空;
[*]用户名:如果登录的用户造成了这个异常,这里将记录造成异常的用户名称;
[*]查询参数:如果日志是在 HTTP 请求中生成的,则此属性将包含 HTTP 查询参数,否则为空;
[*]请求数据:如果日志是在 HTTP 请求中生成的,则此属性将包含 HTTP 请求数据,否则为空;
[*]异常调用堆栈:异常产生的详细调用堆栈信息
异常日志的日志级别为:Error。支持活字格应用和管理控制台。2.2. HTTP 请求日志HTTP 请求日志用来,记录 HTTP 请求相关信息。HTTP 请求日志很有用,有助于调试 Web 应用程序,检查 HTTP 流量,检查在 Web 应用程序中发生了什么,检测黑客攻击等。比如:{"@timestamp":"2022-09-06T00:41:20.7861369Z","@m":"@I","LogType":"HttpRequestLog","RequestId":"693acefb-ea56-4bef-9c51-cacde390187f","Method":"GET","IP":"172.31.128.1","QueryString":"?pageName=90AC3BB5-87DF-4E25-B6C3-A78CC93DF159&isMobile=false&v2=-1941661952-1941661952-1941661952-1941661952-1912358038","Path":"/Home/GetMetadata2"}HTTP 请求日志有下面这些属性:
[*]请求路径:HTTP 请路径,为了减少日志的提交,默认会排除下面这些路径下的请求日志;/GeneratedResources/
/Resources/
/Refresh/B0DA262E-08A7-48FE-B478-BDE2B817B902
/ManagementPage/GetLogContent,/ForguncyHub/SR
[*]参数:HTTP 请求参数;
[*]IP 地址:客户端的 IP 地址;
[*]请求方法:HTTP 请求方法,如 GET、POST;
[*]主机:默认不开启;
[*]是否为 HTTPS:默认不开启;
[*]Cookie:默认不开启;
[*]Referer:默认不开启;
[*]请求头:默认不开启;
[*]UserAgent:默认不开启。
日志级别:Information,支持活字格应用和管理控制台。2.3. HTTP 响应日志当一个 HTTP 请求完成并且服务端给客户端发送响应时,响应日志将被记录。通过 RequestId 找到对应的 HTTP 请求日志,这样用户可以查看一次完整 HTTP 请求和响应的执行情况。比如:{"@timestamp":"2022-09-06T00:41:20.8473128Z","@m":"@I","LogType":"HttpResponseLog","RequestId":"693acefb-ea56-4bef-9c51-cacde390187f","Duration":61.144,"StateCode":200,"Path":"/Home/GetMetadata2"}HTTP 请求日志有下面这些属性:
[*]请求路径:HTTP 请路径,为了减少日志的提交,默认会排除下面这些路径下的请求日志:/GeneratedResources/
/Resources/
/Refresh/B0DA262E-08A7-48FE-B478-BDE2B817B902
/ManagementPage/GetLogContent,/ForguncyHub/SR
[*]返回码:HTTP 状态码;
[*]用时(毫秒):一个请求持续的时间,单位毫秒;
[*]用户名:发起请求的用户名;
[*]内容长度:响应内容的长度;
[*]内容类型:响应内容的媒体类型;
[*]响应头:响应头。
日志级别:如果返回的状态码小于 400 则为Information,否则为 Error。支持活字格应用和管理控制台。2.4. 登录日志任何登录行为都会记录日志,不管登录成功与否。登录行为包括表单身份验证登录、 单点登录、 OAuth 安全提供程序登录、 SAML 安全提供程序登录。通过登录日志可以检测未经授权的登录,登录日志的记录可以满足企业记录登录和登出审计日志的要求。比如:{"@timestamp":"2022-09-06T00:41:28.0693050Z","@m":"@I","LogType":"LoginLog","RequestId":"a006fab8-0668-4adc-a657-d01dcf5b476e","Success":true,"UserName":"Administrator"}登录日志有下面这些属性:
[*]用户名:登录用户名称;
[*]是否成功:是否登录成功;
[*]失败信息:如果登录失败,将会记录一些登录信息,比如“用户名或密码错误”,“没有足够的权限”等;
[*]成功信息:如果登录成功,将会记录登录方式,比如“单点登录”,“OAuth 登录”,“SAML 登录”。
日志级别:如果登录成功为 Information,否则为 Error。支持活字格应用和管理控制台。2.5. 登出日志当用户登出应用时,将会记录登出日志。登出日志的记录可以企业满足记录登录和登出审计日志的要求。比如:{"@timestamp":"2022-09-06T00:53:10.8474013Z","@m":"@I","LogType":"LogoutLog","RequestId":"1023ad72-da98-4814-87bb-e44cf20e562e","Success":true,"UserName":"Administrator"}登出日志有下面这些属性:
[*]用户名:执行登出操作的用户名;
[*]成功信息:注销时,有时会包含成功消息来指示特殊的注销原因,如“没有足够的并发许可证”、“会话 ID 无效或过期”。
日志级别:Information。支持活字格应用和管理控制台。2.6. SQL 执行日志任何被数据库执行的 SQL 会被记录,通过 SQL 日志用户可以方便的查看前端一些页面逻辑在服务端执行的一些 SQL。通过查看 SQL 执行日志可以:
[*]检查实际执行的 SQL 语句以进行调试;
[*]检查实际执行的 SQL 语句,可以针对执行慢的 SQL 进行优化以提高性能所需的时间;
[*]检查异常调用状态以检测错误。
比如:
{"@timestamp":"2022-09-06T00:41:30.2144672Z","@m":"@I","LogType":"ExecuteSqlLog","RequestId":"0fefe408-5856-481f-998a-4b294f5fbca5","Duration":4.6476,"Sql":"select a.[表名] as C0,a.[操作] as C1,a.[主键] as C2,a.[内容] as C3,a.[操作时间] as C4,a. as C5,a. as C6 from .[数据表操作日志] as a ORDER BY a. ASC"}SQL 日志有下面属性:
[*]SQL:执行的 SQL 语句;
[*]参数列表:执行 SQL 的参数列表;
[*]执行实现:SQL 执行的时间;
[*]异常:SQL 执行异常信息。
日志级别:如果有错误发生就是 Error、否则为 Information。仅支持活字格应用。2.7. 审计日志
审计日志用来任何通过命令执行的数据库操作,比如:{"@timestamp":"2022-09-06T00:41:30.2384063Z","@m":"@I","LogType":"AuditingLog","RequestId":"0fefe408-5856-481f-998a-4b294f5fbca5","Statement":"SELECT [表名], [操作], [主键], [内容], [操作时间], [并发控制列] FROM [数据表操作日志]","Success":true,"AuditingType":"查询","IPAddress":"172.31.128.1","UserAccountName":"Administrator","ObjectName":"数据表操作日志","ConnectionStr":"(无)","TableType":"活字格表","DateTime":"2022-09-06T08:41:30.2023498+08:00"}审计日志有下面属性:
[*]时间:开始审计时间;
[*]表类型:活字格表或外联表;
[*]连接串:数据库连接字符串;
[*]对象名称:表格或视图的名称;
[*]用户名:发起操作的用户名;
[*]IP 地址:客户端的 IP 地址;
[*]审计类型:对数据的操作,查询、新增、更新、删除;
[*]是否成功:是否执行成功;
[*]执行语句:执行的 SQL 语句。
日志级别:如果有错误发生就是 Error、否则为 Information。仅支持活字格应用。2.8. 计划任务执行日志当一个计划任务命令被执行时,日记将会被记录。计划任务执行日志可以帮助用户检查计划任务的执行情况。比如:{"@timestamp":"2022-09-06T01:21:42.9228809Z","@m":"@I","LogType":"TaskScheduleCommandLog","Log":"09:21 执行'删除日志'命令, 触发方式:间隔时间触发\r\n错误码: 0\r\n'删除日志'命令执行结束, 用时:23毫秒。\r\n","ErrCode":0,"StartTime":"2022-09-06T09:21:42.9001901+08:00","CommandName":"删除日志"}计划任务执行日志包含的属性如下:
[*]命令名称:计划任务命令名称;
[*]开始执行时间:计划任务开始执行时间;
[*]文件夹名:设计器中计划任务命令放置的文件夹名;
[*]返回码:计划任务执行返回码;
[*]返回信息:计划任务名字执行返回的结果;
[*]执行日志:计划任务命令执行的时间。
日志级别:如果错误码为 0 为 Information,否则为 Error。仅支持活字格应用。2.9. 服务端命令执行日志当服务端命令被执行时,日志将被记录。服务端命令执行日志可以帮助用户检查服务端命令的执行情况。比如:{"@timestamp":"2022-09-06T01:18:02.5578717Z","@m":"@I","LogType":"ServerCommandLog","RequestId":"0d6c5afa-2d42-41ab-896a-335f90164e7d","Log":"09:18 执行'数据查询'命令, 请求方式:POST, 用户:Administrator\r\n错误码: 0\r\n信息: [{\"ID\":1,\"文本\":\"hello\",\"整数\":1,\"日期\":44808.0,\"FGC_Creator\":\"Administrator\",\"FGC_CreateDate\":44805.56698116898,\"FGC_LastModifier\":\"Administrator\",\"FGC_LastModifyDate\":44805.56698118056,\"FGC_Rowversion\":null,\"FGC_UpdateHelp\":\"6db2d9e3-bf1b-42b5-975c-777bc745b16e\"}]\r\n'数据查询'命令执行结束, 用时:99毫秒。\r\n","Message":"[{\"ID\":1,\"文本\":\"hello\",\"整数\":1,\"日期\":44808.0,\"FGC_Creator\":\"Administrator\",\"FGC_CreateDate\":44805.56698116898,\"FGC_LastModifier\":\"Administrator\",\"FGC_LastModifyDate\":44805.56698118056,\"FGC_Rowversion\":null,\"FGC_UpdateHelp\":\"6db2d9e3-bf1b-42b5-975c-777bc745b16e\"}]","ErrCode":0,"FolderName":"查询","StartTime":"2022-09-06T09:18:02.4570646+08:00","CommandName":"数据查询","UserName":"Administrator"}服务端命令执行日志包含的属性如下:
[*]命令名称:服务端命令名称;
[*]开始执行时间:服务端命令开始执行时间;
[*]文件夹名:设计器中服务端命令放置的文件夹名;
[*]返回码:服务端命令返回码;
[*]信息:服务端命令返回信息;
[*]执行日志:服务端名录执行日志,内容形式和在设计器中测试服务端命令输出结果类似;
[*]用户名称:执行该服务端命令的用户名;
日志级别:如果错误码为 0 为 Information,否则为 Error。仅支持活字格应用。2.10. 忘记密码日志任何忘记密码行为执行时,日志将被记录。可以用来检测未认证的登录。比如:{"@timestamp":"2022-09-06T00:56:08.0231446Z","@m":"@E","@l":"Error","LogType":"ForgotPasswordLog","RequestId":"86747069-5c38-447f-a1f6-dcc8364fb11d","ErrorMessage":"指定的用户名或邮箱不存在。","Success":false,"UserName":"example@example.com"}忘记密码日志属性:
[*]用户名称:发起忘记密码操作的用户名称。
日志级别:如果成功为 Information,否则为 Error。支持活字格应用和管理控制台。2.11. 发送邮件日志当发送邮件的行为执行时,日志将被记录。可以查看发送邮件执行情况。发送邮件日志包含了以下属性:
[*]是否成功:邮件是否发送成功;
[*]标题:邮件标题;
[*]发件人:邮件发件人;
[*]收件人:邮件收件人;
[*]用时(毫秒):发送邮件所用时间;
[*]错误信息:错误信息。
日志级别:成功为 Information ,否则为 Error。支持活字格应用和管理控制台。2.12. 结果日志有些行为有行为的执行结果,比如在控制台停止、启动应用等,结果日志用来记录这些行为是否执行成功。结果日志包含的属性:
[*]路径:HTTP 请求路径;
[*]是否成功:是否执行成功;
[*]信息:结果信息。
日志级别:如果执行成功为 Information ,否则为 Error。支持活字格应用和管理控制台。
页: [1]
查看完整版本: 活字格8.0 update1新功能解密:三十二、活字格服务端日志模块