logback :项目中运行时 控制台没有logback日志产生 ?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logback :项目中运行时 控制台没有logback日志产生 ?相关的知识,希望对你有一定的参考价值。
用测试类的时候一切正常 但是放到项目上就没有logback日志产生;产生的日志还是自己定义的 或者 是系统自带的,而自己设置的logback日志信息则没有;网上搜过了,大多是教大家怎么配置的,或者都是在测试类中试行的?与之类似的基本上没有。请大神门帮帮忙!!!!小白在此谢过
参考技术A INFO ThresholdFilter is shown below. 级别过滤,临界点判断追问麻烦说的详细点 我这没有设置Filter
麻烦说的详细点 我这没有设置Filter
麻烦说的详细点 我这没有设置Filter
在 Eclipse 中运行时从 pom 获取 maven 项目版本和工件 ID
【中文标题】在 Eclipse 中运行时从 pom 获取 maven 项目版本和工件 ID【英文标题】:Getting maven project version and artifact ID from pom while running in Eclipse 【发布时间】:2014-12-20 11:59:07 【问题描述】:当我遇到这个问题 Get Maven artifact version at runtime 时,我正在查找如何从 maven pom 或清单中获取应用程序名称(工件 ID)和版本。
当我打包项目时,以上内容对我有用,但当我尝试使用 eclipse 运行程序时,我似乎无法得到任何工作。我在构建时尝试使用 .properties 方法,因为我认为它不依赖于包,但我仍然没有得到结果。如果有人对此问题有任何想法或解决方案,将不胜感激。
我的最后一次尝试如下。这在打包时使用清单(有效)并在 Eclipse 中运行时尝试获取 .properties 文件。
String appVersion = getClass().getPackage().getImplementationVersion();
if(appVersion == null || "".equals(appVersion))
appVersion = Glob.getString(appVersion);
if(appVersion == null || "".equals(appVersion))
System.exit(0);
【问题讨论】:
访问pom.xml
...以及...XML
不是一个选项? “程序”的意图是什么? 程序是作为 Maven 插件实现的选项吗?
所以我的问题是我的属性变量与我的局部变量同名,我忘记将属性变量调用用引号引起来。
【参考方案1】:
创建属性文件
src/main/resources/project.properties
以下内容
version=$project.version
artifactId=$project.artifactId
现在开启maven resource filtering
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
让这个文件被处理成
target/classes/project.properties
有一些类似的内容
version=1.5
artifactId=my-artifact
现在你可以阅读这个属性文件来得到你想要的,这应该每次都能工作。
final Properties properties = new Properties();
properties.load(this.getClassLoader().getResourceAsStream("project.properties"));
System.out.println(properties.getProperty("version"));
System.out.println(properties.getProperty("artifactId"));
【讨论】:
我确实按照您的步骤操作,但它不起作用。你能看看我的问题***.com/questions/37490162/… 我需要使用properties.load(this.getClass(). getClassLoader().getResourceAsStream("project.properties"));
才能让它工作
嗨!它工作得很好,但是,在资源目录中,我还有其他“.properties”文件,这些文件现在有编码问题。你知道maven里有没有办法在properties.load(<Main Class Name>.class.getResourceAsStream("project.properties"));
对于 Spring Boot 应用程序,考虑默认占位符已被重新配置:使用 @ - 所以 @project.version@ 而不是 $project.version。见***.com/a/37491454/3957413【参考方案2】:
现在使用 maven 4 的一个简单解决方案是在您的包中添加一个 VersionUtil
静态方法:
package my.domain.package;
public class VersionUtil
public static String getApplicationVersion()
String version = VersionUtil.class.getPackage().getImplementationVersion();
return (version == null)? "unable to reach": version;
问题是你在项目的 pom 中需要这个“mave-war-plugin”,说你想添加addDefaultImplementationEntries
:
<build>
<finalName>$project.artifactId</finalName>
<plugins>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
...
然后从代码中的某个位置调用VersionUtil.getApplicationVersion()
。
【讨论】:
不幸的是,当代码从类(即 Intellij 中的测试)运行时,此解决方案不起作用:这是此方法的一个限制。以上是关于logback :项目中运行时 控制台没有logback日志产生 ?的主要内容,如果未能解决你的问题,请参考以下文章
程序在python中运行时如何防止用户输入控制台? [复制]
让 Django 项目在 mod_wsgi 中运行时出现问题