小编Tah*_*idi的帖子

以编程方式覆盖log4j配置:FileAppender的文件位置

是否可以覆盖已在log4j.properties未创建新appender 的情况下配置的appender的"File"属性?如果是这样 - 怎么样?

情况就是这样:我有两个分配器,A1是ConsoleAppender,A2是FileAppender.A2的"文件"指向一般错误.log:

log4j.appender.A2.File=error.csv

此appender仅记录错误级别事件或更糟

log4j.appender.A2.Threshold=error.

现在我希望将这些错误写入不同的文件中,具体取决于导致错误的类,因为有几个类正在创建实例.能够快速查看哪个类创建了错误将会有很大的帮助,因为它更有用,然后浏览error.log来查找类标记.

所以我的想法是覆盖"File"属性,例如在这些新创建的类的构造函数中,因此它们将错误记录在不同的文件中.

非常感谢提前!

java overriding log4j properties

9
推荐指数
2
解决办法
2万
查看次数

处理"NOT IN(:param)"时的JPA setParameter

我正在尝试在查询中设置参数,例如:

select * from Cars where Cars.color NOT IN (:color_params)
Run Code Online (Sandbox Code Playgroud)

当我在我的JavaClass中添加参数时,就像:

...
query.setParameter("color_params", "RED,BLUE");
...
Run Code Online (Sandbox Code Playgroud)

这不起作用,只使用一个参数.
我已经尝试过"'RED','BLUE'" 并且没有努力.

如果我把我的参数放在查询中,例如:

select * from Cars where Cars.color NOT IN ('RED','BLUE')
Run Code Online (Sandbox Code Playgroud)

我做错了什么!?

提前致谢

java jpa named-query

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

在log4j中使用FileNamePattern,RollingFileAppender

我有一个名为app.log的日志文件.当它翻身时(我将其设置为每分钟仅用于测试目的),我希望将其重命名为app-YYYY-MM-dd_HH-mm.log但它不起作用.以下是我的log4j设置:

log4j.appender.myLog=org.apache.log4j.RollingFileAppender
log4j.appender.myLog.rollingPolicy=TimeBasedRollingPolicy
log4j.appender.myLog.File=logs/app.log
log4j.appender.myLog.rollingPolicy.FileNamePattern=logs/app-%d{yyyy-MM-dd_HH-mm}.log
log4j.appender.myLog.Append=true
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
Run Code Online (Sandbox Code Playgroud)

有谁知道这是什么问题?在翻转期间,它只是将文件重命名为app.log.1.

java logging log4j

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

querydsl变压器组按计数

我被困在尝试查询(QueryDSL)工作,这给了我一个不同类别的计数.例如,我想要实现的目标:

categoryA -> 10 entries
categoryB -> 20 entries
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

query().from(application)
            .transform(groupBy(application.category).as(list(application)));
Run Code Online (Sandbox Code Playgroud)

但是,这给了我每个类别所有整个条目的列表,我只想得到这个.

我试着乱搞count()但没有运气.

有人知道怎么做吗?

java sql querydsl

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

try/catch/finally的惊人输出?

我运行这段代码:

public static void main(String[] args) {
    System.out.println(catcher());
}

private static int catcher() {
    try {
        System.out.println("TRY");
        thrower();
        return 1;
    } catch (Exception e) {
        System.out.println("CATCH");
        return 2;
    } finally {
        System.out.println("FINALLY");
        return 3;
    }
}

private static void thrower() {
    throw new RuntimeException();
}
Run Code Online (Sandbox Code Playgroud)

我希望在输出中看到这个:

TRY
CATCH
FINALLY
2
Run Code Online (Sandbox Code Playgroud)

但令人惊讶的是输出是:

TRY
CATCH
FINALLY
3
Run Code Online (Sandbox Code Playgroud)

我糊涂了.return 2声明在哪里?这是return at finally一种不好的做法吗?

java try-catch

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

Java中的SNMP,专门用作JMX适配器

我有一些使用JMX监视的JAVA应用程序。

我想为这些应用程序编写一个SNMP客户端,它包装了JMX接口,并通过发现公开了通过SNMP在JMX中公开的相同属性。

如果仅弄清楚如何用JAVA编写SNMP客户端,编写客户端就没有问题。我可以使用JAVA的免费SNMP库吗?是否有用于JMX的良好的免费SNMP适配器?(尝试过“ WebNMS SNMP Adapter for JMX”,但未成功)

谢谢!

java jmx snmp

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

将char []转换为trimmed String的最快方法

在我的程序中,我需要将char[]固定大小转换为修剪字符串(没有从数组中取出空格).在我做的那一刻,new String(array).trim()但我想trim()尽可能避免.有什么建议怎么做得更好?最好的祝福.

java string trim

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

java条件运算符和不同类型

我在ItemClass中有两种方法:

public void setValue(String v);
public void setValue(Double v);
Run Code Online (Sandbox Code Playgroud)

我想使用条件运算符setVAlue在另一个类:

String str = ...
Double dbl = ...
item.setValue((condition) ? str : dbl);
Run Code Online (Sandbox Code Playgroud)

但编译说:

cannot find symbol
symbol  : method setValue(java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>>)
Run Code Online (Sandbox Code Playgroud)

我认为编译器使用Double和String 最近的公共超类(超级接口)作为条件运算符的类型.但为什么?

java conditional-operator

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

将列表与涉及布尔值的多个属性进行比较

我有一些实现比较器接口的类通过添加患者对象来对ArrayList进行排序,我想通过多个属性对列表进行排序,并且只使用Enums进行排序没有问题,但是我想通过使用布尔值进行排序来覆盖这种排序.我知道我不能使用该compareTo方法,因为它不是Wrapper类,但我无法找到一种合适的方法来对列表进行排序boolean.

任何帮助将不胜感激.

    public Patient(int nhsNumber, String name, Status triage, boolean previouslyInQueue, boolean waitingTime){
    this.nhsNumber = nhsNumber;
    this.name = name;
    this.triage = triage;
    this.previouslyInQueue = previouslyInQueue;
    this.waitingTime = waitingTime;

}
Run Code Online (Sandbox Code Playgroud)

这是我的比较课

public class PatientInQueueComparator implements Comparator<Patient> {

@Override
public int compare(Patient p1, Patient p2) {

    if(p1.isPreviouslyInQueue() && !p2.isPreviouslyInQueue()){
        return 1;
        }else if(p1.isPreviouslyInQueue() && p2.isPreviouslyInQueue()){
        return -1;
        }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的主要方法

List<Patient> queue = new ArrayList<Patient>();

queue.add(new Patient(1, "Bob", Status.URGENT, true, false)); //1st
queue.add(new Patient(2, "John", Status.EMERGENCY, …
Run Code Online (Sandbox Code Playgroud)

java sorting boolean linked-list comparator

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

Java简单彩票计划

我试图创建一个简单的彩票计划.这是一个问题:它仍然打印相同的数字.例如,我得到了33 21 8 29 21 10输出.每当生成随机数时,代码会检查是否已生成该数字,然后它会创建一个新的随机数,但之后不会再次检查.我找不到办法做到这一点.

public static void main(String[] args)
{

    int[] lottery = new int[6];
    int randomNum;

    for (int i = 0; i < 6; i++)
    {
        randomNum = (int) (Math.random() * 50); //Random number created here.
        for (int x = 0; x < i; x++)
        {
            if (lottery[i] == randomNum) // Here, code checks if same random number generated before.
            {
                randomNum = (int) (Math.random() * 50);//If random number is same, another number generated.
            } …
Run Code Online (Sandbox Code Playgroud)

java arrays

3
推荐指数
2
解决办法
3万
查看次数