小编coo*_*fan的帖子

有没有办法从java.util.logging.Logger输出中删除信息行?

使用java.util.logging.Logger将一些日志输出到控制台,如下所示:

public static void main(String[] args) {
    Logger logger = Logger.getLogger("test");
    logger.info("Hello Wolrd!");
}
Run Code Online (Sandbox Code Playgroud)

输出是:

FEB 16, 2012 10:17:43 AM com.abc.HelloWorld main
INFO: Hello World.
Run Code Online (Sandbox Code Playgroud)

这似乎没问题,但......

我们在所有Ant任务(内部标准)中使用java.util.logging.Logger,我们有一个大型的ant项目.完整周期的控制台输出可能大于300KB,其中我们自己的记录器输出至少达到50.

现在我不想看到有关Level.INFO输出的时间,类名和方法的信息.信息行也使得难以专注于自定义消息.

那么有没有办法从每个输出(或仅从每个Level.INFO输出)中删除第一行(时间戳,类和方法的信息)?

java logging

10
推荐指数
1
解决办法
9901
查看次数

使用<ant>任务调用的构建文件将重置调用者的日志记录配置

两个项目:产品(项目-A)和A(项目-B)的汽车基准项目.

在B的构建文件中,我们需要调用A的构建文件来运行构建和bundle-with-app-server过程,如下所示:

<ant antfile="${build-file-A}" inheritall="false" target="all" />
Run Code Online (Sandbox Code Playgroud)

而且,在项目B中,我们有许多使用java.util.logging(JDK Logging Framework)输出消息的Ant任务.

问题是,在该行之后,所有jdk记录器输出都消失了.

通过调试,我发现在项目A的构建文件初始化过程中,项目A中的静态定义的东西将运行LogManager.readConfiguration(InputStream),它会加载一个仅包含单个类的记录器配置的配置文件.

在期间readConfiguration,LogManager.reset()将被称为; 在期间reset,每个记录器的每个处理程序都将被删除.由于<ant>将目标构建文件加载到调用者的同一进程,因此将删除所有处理程序.

因此,除了可配置的类之外,由于缺少输出处理程序,使用jdk logger的每个其他类都无法输出消息.

我的问题是:

有没有办法解决这个问题,除了:

  1. 用于<exec>运行项目A的构建文件;
  2. 编写一个要运行的任务,readConfiguration()以便在<ant>调用后从默认配置文件中恢复默认的JDK日志记录设置.
  3. 使用ant自己的日志框架(Task.log()等).

请注意,我无法修改项目A以防止出现此问题.

java ant logging java.util.logging

7
推荐指数
1
解决办法
361
查看次数

如何使用JBoss EAP中的另一个jar覆盖WEB-INF/lib中jar中的某些类?

如果要调用要覆盖的类com.example.FooServlet并且这个类在jar中WEB-INF/lib/foo.jar,那么如何使用com.example.FooServlet另一个jar中调用的类来覆盖它,比如说bar.jar

或者有没有办法确保bar.jar首先加载?

制作bar.jar一个模块是不行的,因为FooServlet从许多罐子里进口大量的类WEB-INF/lib.


正如我上面所说的,我试图bar.jar在一个模块中包含,但没有找到类或没有类def错误(记不清楚)作为FooServlet扩展/实现一些额外的类/接口在WEB-INF /中的第三方jar中库.

我不允许触摸foo.jar或任何已经存在的罐子WEB-INF/lib.

java jboss jboss7.x

6
推荐指数
1
解决办法
894
查看次数

ANT根据模式选择文件,移动到dest并重命名

我正在尝试复制以_ $ {env} .xml结尾的根文件夹开始的所有目录下的文件,如果找到则从文件名中删除_ $ {env}或复制目录中存在的xml文件我不能让这个工作请帮忙.(可能我需要一个移动和映射器重命名,我不知道怎么不能把它们编织在一起.)

<target name="main">
    <copy todir="qa-wprelease"> 
        <fileset  dir="bin-debug" includes="**/*.xml"> 
            <or>
                <filename name="*_${env}.xml"/> 
                <filename name="*.xml" />
            </or>
        </fileset>
    </copy> 
</target>
Run Code Online (Sandbox Code Playgroud)

ant

4
推荐指数
1
解决办法
6242
查看次数

[ANT]属性和Classpathref继承在“foreach”中被破坏

为了简单地解释它,这里是一个例子:

在 build.xml 中,导入 local-db.xml。在local-db.xml 中,有一个名为“warmup”的目标,它使用task 调用第三个文件的一个目标——local-gr.xml。

所有公共属性和类路径定义都被导入并在 build.xml 中设置。

在 project.properties 中:

dest-dir=./destination
Run Code Online (Sandbox Code Playgroud)

在 build.xml 中:

<path id="gr-classpath"> ... </path>
<import file="local-db.xml" />
Run Code Online (Sandbox Code Playgroud)

在本地 db.xml 中:

<ant antfile="local-gr.xml" target="deploy" inheritAll="true" inheritRefs="true" />
Run Code Online (Sandbox Code Playgroud)

在 local-gr.xml 中,有两个这样的目标:

<target name="deploy">
    <tar ....../>
    <foreach list="${list1}" delimiter="," parallel="true" trim="true" param="item" target="deploy-single" />
</target>

<target name="deploy-single">
    something using property ${dest-dir} and path "gr-classpath"
</target>
Run Code Online (Sandbox Code Playgroud)

现在问题来了:

属性${dest-dir}和路径“gr-classpath”可以在“deploy”中使用,因为我设置了inheritAll和inheritRefs,但不能在“deploy-single”中直接使用。当目标被 foreach 调用时,“继承”不会?

在 的帮助下,我设法将 ${dest-dir} 传递给“deploy-single”,但我没有找到任何方法将类路径引用“gr-classpath”传递给“deploy-single”。

我为解决它所做的工作是在“deploy-single”中再次声明,但我根本不喜欢它。

为什么会发生这种情况?我该怎么做才能让它更优雅?

ant foreach

1
推荐指数
1
解决办法
829
查看次数

标签 统计

ant ×3

java ×3

logging ×2

foreach ×1

java.util.logging ×1

jboss ×1

jboss7.x ×1