解决WebLogic内置Web服务访问日志不更新问题的3种方法_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4963 | 回复: 0   主题: 解决WebLogic内置Web服务访问日志不更新问题的3种方法        上一篇   下一篇 
yd7563337
注册用户
等级:少将
经验:10191
发帖:128
精华:1
注册:2011-8-9
状态:离线
发送短消息息给yd7563337 加好友    发送短消息息给yd7563337 发消息
发表于: IP:您无权察看 2015-4-1 16:55:50 | [全部帖] [楼主帖] 楼主

在使用WebLogic提供的HTTP访问的扩展日志功能时,碰到一个很头疼的事情,就是HTTP访问并没有实时写入access.log,给我的感觉是,访问了n次WebLogic应用,access.log就是不更新,不过如果不停的刷新访问,access.log会时不时地更新一把,或者就是停止WebLogic时,也会把过往的访问都写到access.log中,很不靠谱啊,直接导致测试应用时抓狂。
google了多次,没有找到什么靠谱地解决办法,其实事后看没搜到是因为没有使对关键字。那Oracle的产品,就MetaLink上搜吧,还真找到了。

先说原因:WebLogic在纪录HTTP访问时使用缓冲技术,WebLogic每隔LogFileFlushSecs秒(默认60秒),会检查一下该缓存是否满(默认8KB),该缓存大小由LogFileMBean的属性LogFileBufferKBytes所定义。WebLogic使用缓冲技术主要是为了提高性能,生产环境中访问量巨大,自然会实时更新日志,推荐保持默认配置,而手工测试时,一个人点来点去的,自然不会很快满8KB的缓存,access.log也就不会实时更新了。

再说解决方法:

方法一、使用weblogic.Admin更改

setdomainenv.cmd
java weblogic.Admin -url t3://127.0.0.1:7001 -username %username% -password %password% SET -type WebServerLog -property BufferSizeKB 0


上述命令序列将修改config.xml,使得WebLogic Server的WebServer日志定义中包含将属性buffer-size-kb定义为0,如下所示:

<server>
<name>AdminServer</name>
<web-server>
<web-server-log>
... ...
<buffer-size-kb>0</buffer-size-kb>
... ...
</web-server-log>
</web-server>
... ...
</server>


修改完毕后,重启该WebLogic Server则该配置生效。

方法二、使用WLST方式更改

执行setDomainEnv.cmd(/.sh)

执行java weblogic.WLST将开始WLST命令

wls:/offline> connect('user_name','password','t3://localhost:7001')
wls:/wl_server/serverConfig> edit()
wls:/wl_server/edit !> startEdit()
wls:/wl_server/edit !>      cd('Servers/<server_name>/WebServer/<server_name>/WebServerLog/<server_name>')
wls:/wl_server/edit/Servers/<server_name>/WebServer/<server_name>/WebServerLog/<server_name> !> set('BufferSizeKB',0)
wls:/wl_server/edit/Servers/<server_name>/WebServer/<server_name>/WebServerLog/<server_name> !> save()
wls:/wl_server/edit/Servers/<server_name>/WebServer/<server_name>/WebServerLog/<server_name> !> activate()


上述命令序列将修改config.xml,使得WebLogic Server的WebServer日志定义中包含将属性buffer-size-kb定义为0,如下所示:

<server>
<name>AdminServer</name>
<web-server>
<web-server-log>
... ...
<buffer-size-kb>0</buffer-size-kb>
... ...
</web-server-log>
</web-server>
... ...
</server>


修改完毕后,重启该WebLogic Server则该配置生效。

方法三:手工修改config.xml

手工添加关于buffer-size-kb的定义,但必须修改该WebLogic Server的启动命令,添加Java Option,使Java不再验证config.xml,具体如下:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.configuration.schemaValidationEnabled=false


否则,无法正常启动该WebLogic Server,将报错如下:

<Critical> <WebLogicServer> <BEA-000362> <Server failed. Reason: [Management:141245]Schema Validation Error in C:\Oracle\Middleware\WLS10.3\user_projects\domains\base_domain\config\config.xml see log for details. Schema validation can be disabled by starting the server with the command line option: -Dweblogic.configuration.schemaValidationEnabled=false>


不推荐使用该方法

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论