我正在使用log4j在一些我正在进行调试的代码中.我一直在运行我的代码java -jar test.jar | tee file.txt来登录到一个文件,但现在我希望能够在我仍在运行时切换我正在登录的文件,这是tee无法做到的.现在我正在这样做
private static final Logger log = LoggerFactory.getLogger(Test.class);
public void main() {
File file = new File(/path/to/file);
System.setOut(new PrintStream(file));
System.out.println("hello world"); //This works.
log.info("hello world"); //this doesn't.
Run Code Online (Sandbox Code Playgroud)
由于某种原因,Logger输出不会进入我的文件,它会进入我的控制台,但println()工作正常.有谁知道为什么会这样,以及如何解决这个问题?
谢谢.
编辑:这是我的log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!--<param name="ConversionPattern" value="%d %-5p [%c] %m%n" />-->
<param name="ConversionPattern" value="%d %-5p [%c:%L] %m%n" />
</layout>
</appender>
<logger name="com.company">
<level value="trace" />
</logger>
<logger name="org.springframework">
<level …Run Code Online (Sandbox Code Playgroud) 我知道在 python 中你可以为参数设置默认值,如下所示:
def func(self, arg='value'):
#somecode
Run Code Online (Sandbox Code Playgroud)
我有一个最多需要 16 个参数的函数,因此我希望将它们存储为元组。问题是我想为元组的某些值设置默认值,而不是整个值。将默认元组设置为
def func(self, values=('foo', 'bar', 'foobar')):
Run Code Online (Sandbox Code Playgroud)
如果我传入一个只有两个值的元组,会被覆盖吗?如果我这样做,例如:
func(('bar', 'foo')
Run Code Online (Sandbox Code Playgroud)
值==('bar','foo'),而不是('bar','foo','foobar')。有解决方法吗?
我正在尝试使用以下方法在页面上查找元素
@FindBy(xpath = "somexpath")
WebElement someElement;
Run Code Online (Sandbox Code Playgroud)
问题是有时元素的 xpath 略有不同(因为在同一个表中显示失败的登录消息)。如何通过一个 xpath 或另一个找到元素?就像是
xpath == "somexpath1" || xpath == "somepath2"
Run Code Online (Sandbox Code Playgroud)
我试过做一个重复的注释,像这样:
@FindBy(xpath = "somexpath1")
@FindBy(xpath = "somexpath2")
WebElement someElement
Run Code Online (Sandbox Code Playgroud)
但这不会编译。我试过使用@FindBys,但这似乎像&& 而不是||。
任何帮助,将不胜感激。谢谢!
我主要有 Java 背景,但最近开始研究 Python。我基本上已经明白了,但有些语法对我来说似乎很奇怪。我正在处理这个项目,其中包含多个文件/类。我有一个类,Mesh.py:
class Mesh:
def __init__(self, name):
#dostuff
Run Code Online (Sandbox Code Playgroud)
我想在另一个文件 Main.py 中实例化它。我注意到两件事,
要创建网格,我必须这样做:
mesh = Mesh.Mesh('name')
Run Code Online (Sandbox Code Playgroud)这看起来超级尴尬。为什么我不能这样做
mesh = Mesh('name')
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么,还是这只是Python不可避免的一部分?