1.Jboss的日志系统(standalone模式) 在介绍案例分析之前先来介绍一下Jboss提供的日志系统,下载EAP的zip包解压后的结构如下:

在standalone目录下有两个文件standalone.xml和logging.properties,eap启动时会读取并解析standalone.xml文件。

在standalone.xml这份配置文件中有关于日志子系统的相关配置,基本结构如下所示:        <subsystem xmlns="urn:jboss:domain:logging:1.3">            <console-handler name="CONSOLE">                <level name="DEBUG"/>                <formatter>                    <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>                </formatter>            </console-handler>            <periodic-rotating-file-handler name="FILE" autoflush="true">                <formatter>                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>                </formatter>                <file relative-to="jboss.server.log.dir" path="server.log"/>                <suffix value=".yyyy-MM-dd"/>                <append value="true"/>            </periodic-rotating-file-handler>            <logger category="com.arjuna">                <level name="WARN"/>            </logger>            <logger category="org.apache.tomcat.util.modeler">                <level name="WARN"/>            </logger>            <logger category="org.jboss.as.config">                <level name="DEBUG"/>            </logger>            <logger category="sun.rmi">                <level name="WARN"/>            </logger>            <logger category="jacorb">                <level name="WARN"/>            </logger>            <logger category="jacorb.config">                <level name="ERROR"/>            </logger>            <root-logger>                <level name="DEBUG"/>                <handlers>                    <handler name="CONSOLE"/>                    <handler name="FILE"/>                </handlers>            </root-logger>        </subsystem> 在eap解析到这个subsystem之前,jboss会使用logging.properties中的配置进行日志输出,一旦eap解析完成这个subsystem就会由其来接管日志输出这项工作,另外如果subsystem中的内容被修改,则其修改会被反应到logging.properties中,因而修改日志配置,最好是修改subsystem中的内容而不是logging.properties。 logging subsystem中的日志配置有多种模式,下面给出三种: console-handler 控制台显示 periodic-rotating-file-handler 定期新建一个log文件 size-rotating-file-handler 满足指定大小就重新新建一个log文件

2. 案例分析 在实际部署运行的系统经常是跑在物理机的一个虚拟机中,而且应用服务器(例如Jboss)通常不会只有一个war包而是会有多个,如果使用subsystem的日志输出方式,日志输出会杂在一起,对排查问题没有多大帮助,反而会让人找不到方向,最好是能够让war包自己管理自己的日志输出(当然是在单机模式下,如果是集群的话还是交给Jboss吧),这样不仅便于我们修改日志配置(总是感觉修改jboss的subsystem不是那么方便),还能得到特定应用的全部日志输出。 经过一番搜索找到了一个解决方案,通过一个启动参数关闭Jboss对日志的托管 <span style="white-space:pre"> </span>-Dorg.jboss.as.logging.per-deployment=false 将其加入jre的启动参数中,eap启动时会检测这个参数,如果其值为false则关闭对应用日志的接管,这样应用就可以控制自己的日志输出了。有两种方式来使用这个参数,一个是利用eap的启动过程(就是其启动脚本)中加载的配置,在其中加入对这个参数的使用,另一个是写一个脚本控制jre与eap的启动。 (1)利用eap的启动配置

在standalone.conf中添加下面这一行 <span style="white-space:pre"> </span>JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.as.logging.per-deployment=false"

(2)jre启动脚本 在linux系统中使用shell脚本控制jre以及eap的启动是很方便的,写一个这样的脚本在jre的启动命令中添加上述参数就可以实现将应用自己控制log的输出,脚本样本如下: kill -9 `ps aux | grep -v 'awk' |awk '/jboss-eap-6.2/{print $2}'`echo 'kill jboss service'rm -rf ./*.logrm -rf ./nohup.outecho 'clean log files'rm -rf /usr/jboss/jboss-eap-6.2/standalone/tmp/vfs/rm -rf /usr/jboss/jboss-eap-6.2/standalone/tmp/work/echo 'clean tmp workspace'/bin/cp -f ./example.war /usr/jboss/jboss-eap-6.2/standalone/deployments/echo 'copy ams.war to workspace'sleep 1snohup /usr/jboss/jboss-eap-6.2/bin/standalone.sh -Dorg.jboss.as.logging.per-deployment=false -b 192.168.2.160 &echo 'start nohup job'sleep 1stail -f ./nohup.out使用脚本启动时,需要注意如果当前系统中已经运行了一个Jboss服务了则需要先清除(关闭或者杀掉进程)之前的服务,然后如果有必要可以清除之前应用生成的log文件,如果不希望之前应用的缓存对新的应用造成影响,可以把Jboss的缓存清空,之后就可以将war包拷贝到Jboss的deployments目录下,拷贝完成后进行jre及eap的启动,使用nohup命令进行任务托管,并附上控制log托管的参数配置,脚本执行到这里,如果想要观察启动的过程可以使用tail命令监控nohup的输出,脚本运行过程基本就是这个流程,当然也可以添加其它的条件判断比如war包是否存在等。 --------------------- 作者:北海飞舞 来源:CSDN 原文:https://blog.csdn.net/liupin_2011/article/details/42388907?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

Jboss7或者wildfly部署war包的问题 1的更多相关文章

  1. Jboss7或者wildfly部署war包的问题

    如果在Jboss7或者wildfly中部署war包是遇到类似如下错误: "{"JBAS014671: Failed services" => {"jbos ...

  2. tomcat本地部署war包的方式

    最近学习java,在本地tomcat部署时,主要采取以下方式: 一.本地构建生成war包 在本地项目中的terminal下,使用命令 “mvn clean install”或 先执行“mvn clea ...

  3. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  4. Docker容器Tomcat部署war包

    在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run  -d --nam ...

  5. 持续集成之Jenkins自动部署war包到远程服务器

    一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...

  6. weblogic安装部署war包——windows

    ### weblogic安装部署war包——windows#### 下载weblogic安装包[csdn下载地址](https://download.csdn.net/download/luozhua ...

  7. tomcat快速部署War包操作

    Linux快速部署War包操作,暂时是最简单的操作 1.先关闭Tomcat /home/java/tomcat7/bin/shutdown.sh 2.进入War包存放目录(可以通过工具:SSH Sec ...

  8. 如何在阿里云上部署war包到tomcat服务器

    一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...

  9. 如何在windows上部署war包到tomcat服务器

    一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...

随机推荐

  1. mycat中间件--linux安装mycat1.6版本

    一.mycat安装前准备1.mycat下载地址,点击此处进行下载2.环境要求如下: mycat使用Java开发,因为用到了JDK 7的部分功能,所以在使用前请确保安装了JDK 7.0,并设置了正确的J ...

  2. EventProcessor与WorkPool用法--可处理多消费者

    单一的生产者,消费者有多个,使用WorkerPool来管理多个消费者: RingBuffer在生产Sequencer中记录一个cursor,追踪生产者生产到的最新位置,通过WorkSequence和s ...

  3. tf.estimator.Estimator

    1.定义 tf.estimator.Estimator(model_fn=model_fn) #model_fn是一个方法 2.定义model_fn: def model_fn_builder(sel ...

  4. Java 9 中,我们可以在匿名类中使用 <> 操作符

    不说了,直接上代码: public class NewTest { public static void main(String[] args) { N<Integer> n1 = new ...

  5. linux 初始化工作环境

    #!/bin/sh # # init workspace # /bin/svnserve -d -r /home/oracle/projects --listen-port= su - oracle ...

  6. CentOS MPlayer

    .准备软件 mplayer官网:http://www.mplayerhq.hu/design7/news.html RPM Fusion网址:http://rpmfusion.org/ EPEL网址: ...

  7. BIO与NIO、AIO的区别(这个容易理解)

    转自:http://blog.csdn.net/skiof007/article/details/52873421 BIO与NIO.AIO的区别(这个容易理解) IO的方式通常分为几种,同步阻塞的BI ...

  8. shell命令——cut

    功能:把行分成域 默认限定符为tab, -d:改变限定符 -f:指定输出力包含的域

  9. OAuth2.0的理解&基础

    此文章是复制黏贴网上文章的,主要做自己备用着看(也加了自己的一点见解),喜欢的读者也可以看. OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2 ...

  10. 【模板】堆优化 + dij +pair 存储

    就是短 感谢Cptraserdalao的博客 #include<bits/stdc++.h> using namespace std; struct node { int val,num; ...