gpt4 book ai didi

windows - 在 Windows 10 64 位上控制台显示的 ANSI 编码时登录异常

转载 作者:可可西里 更新时间:2023-11-01 09:36:24 26 4
gpt4 key购买 nike

无法完全找到这个问题的答案,任何人都可以说明修复方法。

我有一个正在构建和使用 logback(logabck 1.2.3、jansi 1.16)和 groovy 的库 jar,我正在尝试对日志显示进行颜色编码 - 正如 spring boot 设法做到的 - 但我没有我不想将 spring boot 作为我正在构建的这个库的依赖项。

我已经将 jansi(logabck 文档中所述的 1.16)库作为对 gradle 构建的依赖项。

我的 logback.groovy 的相关部分看起来像这样

appender('STDOUT', ConsoleAppender) {
withJansi = true
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = consolePatternFormat
}
}

当我运行测试时,我得到了这样的错误(启用了 jansi)

16:17:42,344 |-WARN in com.softwood.logging.logback.AnsiConsoleAppender[STDOUT] - Failed to create WindowsAnsiOutputStream. Falling back on the default stream. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type org.fusesource.jansi.WindowsAnsiOutputStream
at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type org.fusesource.jansi.WindowsAnsiOutputStream
at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:69)
at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:40)
at at ch.qos.logback.core.ConsoleAppender.getTargetStreamForWindows(ConsoleAppender.java:88)
at at ch.qos.logback.core.ConsoleAppender.start(ConsoleAppender.java:79)
...
Caused by: java.lang.reflect.InvocationTargetException
at at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:64)

这里有一个建议https://jira.qos.ch/browse/LOGBACK-762所有需要做的就是包装输出流,所以我在我的项目中创建了一个自定义控制台附加程序,如下所示

import java.io.OutputStream;
import org.fusesource.jansi.AnsiConsole;
import ch.qos.logback.core.ConsoleAppender;

public class AnsiConsoleAppender<E> extends ConsoleAppender<E> {

@Override
public void setOutputStream(OutputStream outputStream) {
super.setOutputStream(AnsiConsole.wrapOutputStream(outputStream));
}
}

并将 logback.groovy appender 修改为像这样使用 AnsiConsoleAppender

 appender('STDOUT', AnsiConsoleAppender) {
withJansi = true
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = consolePatternFormat
}
}

但是这和以前一样失败了。如果我禁用 jansi 支持——一切都如您所愿。当我启用 jansi 并运行测试时,这些会失败,如图所示

彩色日志记录与 springboot 一起工作,你会得到彩色控制台,所以有人知道如何做到这一点。但是不知道logback问题是什么

有没有人有基本的 jansi 颜色编码用于 logback (1.2.3) 在 windows 下工作?如果是这样, secret 是什么。

现在我不得不禁用它,但我想让它正常工作。有点郁闷

最佳答案

我通过删除 Jansi 解决了同样的问题

<!-- <withJansi>true</withJansi> -->

关于windows - 在 Windows 10 64 位上控制台显示的 ANSI 编码时登录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com