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里有没有办法在标签上设置编码? 如果您从 public static void main() 中尝试它,“this”将不能作为它的静态方法使用。因此,您需要将它与包含 public static void main() 的类名一起使用,如下所示:properties.load(&lt;Main Class Name&gt;.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 中运行时出现问题

在 Eclipse 中运行时从 pom 获取 maven 项目版本和工件 ID

eclipse vs tomcat部署-项目在eclipse中运行时导出的战争(部分)失败