小编lob*_*rus的帖子

log4j.properties运行sbt test时忽略

我正在使用Scala中的Spark应用程序,它使用SBT进行构建.Spark会创建非常详细的日志记录,我希望在测试运行时忽略这些日志记录.

我有一个在src/test/resources下设置的log4j.properties文件,以及包含以下内容的src/main/resources:

# Set everything to be logged to the console
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{10}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.akka=ERROR
log4j.logger.Remoting=ERROR
log4j.logger.org.apache.spark=ERROR
log4j.logger.org.eclipse.jetty=ERROR
Run Code Online (Sandbox Code Playgroud)

当使用sbt test或运行完整应用程序运行应用程序时,它正确运行但仍记录与Spark相关的所有INFO级别语句

我在文件配置中是否缺少某些内容,或者我是否需要明确告诉sbt加载log4j.properties?我应该一起尝试一种新的方法吗?

我也受到限制,因为应用程序需要能够在我们的CI环境和应用了日志记录设置的其他用户计算机上运行.这意味着需要在应用程序的git仓库中包含和识别设置.

log4j scala sbt apache-spark

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

使用Java nio编写文件元数据的问题

我希望使用java.nio.file.Files中的功能向任何类型的文件添加自定义元数据标记.我已经能够正确读取元数据,但每当我尝试设置元数据时都会遇到问题.

我尝试使用Files.setAttribute使用以下内容设置带有普通字符串的自定义元数据元素

    Path photo = Paths.get("C:\\Users\\some\\picture\\path\\2634.jpeg");
    try{
        BasicFileAttributes attrs = Files.readAttributes(photo, BasicFileAttributes.class);
        Files.setAttribute(photo, "user:tags", "test");
        String attribute = Files.getAttribute(photo, "user:tags").toString();
        System.out.println(attribute);
    }
    catch (IOException ioex){
        ioex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

但最终会出现以下错误:

线程"main"java.lang.ClassCastException中的异常:java.lang.String无法强制转换为java.nio.ByteBuffer

如果我尝试将该字符串转换为ByteBuffer,就像这样

    Path photo = Paths.get("C:\\Users\\some\\picture\\path\\2634.jpeg");
    try{
        BasicFileAttributes attrs = Files.readAttributes(photo, BasicFileAttributes.class);
        Files.setAttribute(photo, "user:tags", ByteBuffer.wrap(("test").getBytes("UTF-8")));
        String attribute = Files.getAttribute(photo, "user:tags").toString();
        System.out.println(attribute);
    }
    catch (IOException ioex){
        ioex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

而不是输出文本'test',它输出奇怪的字符串'[B @ 14e3f41'

将String转换为bytebuffer并将其转换回字符串的正确方法是什么?有一种更可自定义的方法来使用java修改File上的元数据吗?

java nio metadata file

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

在 Postgresql 中将 CURRENT_DATE 设置为常量值以进行单元测试

我正在尝试为一个小脚本编写单元测试,该脚本会从 PostgreSQL 数据库表中删除所有超过 6 个月的条目。该脚本执行以下查询。

DELETE FROM some_table WHERE tstamp < (CURRENT_DATE - INTERVAL '180 days');
Run Code Online (Sandbox Code Playgroud)

该脚本是用Python编写的,我正在使用testing.postgresql创建一个我可以自由操作的本地临时数据库实例。我遇到的问题是,我无法找到一种方法来强制 CURRENT_DATE 为常量值,以便我可以创建特定日期之前和之后的测试条目,并且如果稍后运行测试,则不会更改。

是否可以覆盖 PostgreSQL 数据库中的 CURRENT_DATE 以始终返回预定义时间?

python postgresql time unit-testing data-cleaning

2
推荐指数
1
解决办法
1522
查看次数