是否有以登录组为单位来输出日志文件的方法?

 
有2种方法。
1.使用LogBack的filter功能的方法
2.将Logger名称的前面设置为登录组名称的方法

在WebPlatform Ver7.0及以后版本中可以使用上述方法。

【方法1】使用LogBack的filter功能的方法
使用WebPlatform Ver7.0及以后版本中搭载的LogBack的filter功能(http://logback.qos.ch/manual/filters.html),以及Janino库的方法。
如果简单地说明LogBack的filter功能,它是根据某个值更改日志的输出方法的结构。

参考URL
http://logback.qos.ch/manual/filters.html(英语)
http://logback.qos.ch/manual/filters_ja.html(日语)

以下是简单的示例。
请一并参阅附件。

●准备
(1)请复制以登录组为单位的日志配置文件。
conf/log/login_group_for_default_logger.xml
conf/log/login_group_for_hoge_logger.xml
※附件是为“default”和“hoge”的2个登录组制作的。
请根据需要更改内容。

(2) 请复制Servlet Filter(过滤器)的类。
doc/imart/WEB-INF/classes/sample/MDCTestFilter.java

(3) 编辑web.xml。
将上述Servlet Filter(过滤器)映射到所有URL。
web.xml设置示例
<web-app>



<filter>
<filter-name>MDCTestFilter</filter-name>
<filter-class>sample.MDCTestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MDCTestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



<web-app>

(4) 在以下网站中下载Janino,解压Janino以后将“janino.jar”库复制到以下目录中。
目录 <%im_path%>/lib/
另外,本公司使用Janino Ver2.5.15来已确认可以运行。

https://janino-compiler.github.io/janino/(英语)

(5)请将<%im_path%>/conf/imart.xml设置为如下。
//----
<compiler>
<class>
<archive>
<file/>
</archive>
</class>
</compiler>
・・・
//----

//----
<compiler>
<class>
<archive>
<file/>
<directory>lib</directory>
</archive>
</class>
</compiler>
・・・
//----

---------------------
解说
---------------------
1:在Servlet Filter(过滤器)“MDCTestFilter”中,MDC中设置了登录组id。
2:辨别MDC中已设置的登录组,并判断可否输出日志。
(login_group_for_default_logger.xml中的第5行)

参照上述示例进行实现,应该可以设置LogBack的filter功能。
另外,有关LogBack的filter功能的详细信息,请参阅以下URL。
http://logback.qos.ch/manual/filters.html(英语)
http://logback.qos.ch/manual/filters_ja.html(日语)
 

【方法2】将Logger名称的前面设置为登录组名称的方法
这是在要创建的应用程序中决定Logger名称的命名规则的方法。
例如,以下将Logger名称的前面设置为登录组名称。
----
var logingGroupName = AccessSecurityManager.getSessionInfo().loginGroup;
var logger = Logger.getLogger(logingGroupName + ".foo.bar");
logger.info("message");
----
然后,在配置文件中进行更改输出目的地的设置。
例如,想要将登录组“default”输出到其他文件时,首先将配置文件中的logger设置为如下。
----



1: <logger name="default" additivity="false">
2: <level value="info" />
3: <appender-ref ref="LOGIN_GROUP_DEFAULT_FILE" />
4: </logger>



----
其次,定义上述第3行已指定的“LOGIN_GROUP_DEFAULT_FILE”的appender,并在其Appender中指定输出目的地。
另外,intra-mart的特定用途日志(=request.log等),通过与上述内容相同的方法来更改输出目的地。
即是,将特定的命名规则添加在Logger名称的前面,更改输出目的地。
请参照conf/im_logger_request.xml,这样可以比较容易理解。


-- 适用对象 ----------------------------------------------------------------
iWP/Web系统构建基础/WebPlatform/AppFramework
--------------------------------------------------------------------------------


FAQID:325
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
由 Zendesk 提供技术支持