Java log4j创建空日志文件
这是我的log4j属性Java log4j创建空日志文件,java,log4j,Java,Log4j,这是我的log4j属性 log4j.rootLogger=All,consoleAppender, rollingFile log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout log4j.appender.consoleAppender.layout.ConversionPa
log4j.rootLogger=All,consoleAppender, rollingFile
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=D:/home/tim/logs/sparkStreaming.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.MaxFileSize=10MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.append=true
在下面的代码段中使用它
package rsvp;
import org.apache.spark.SparkConf;
import static org.apache.spark.sql.functions.col;
import static org.apache.spark.sql.functions.from_json;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.streaming.OutputMode;
import org.apache.spark.sql.streaming.StreamingQuery;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;
import rsvp.util.LoadResourceFile;
import org.apache.spark.sql.avro.package$;
@Service
@ComponentScan({ "rsvp.util" })
public class ProcessingService {
private static Logger LOGGER = Logger.getLogger(ProcessingService.class);
@Autowired
private final SparkConf sparkConf;
@Autowired
private LoadResourceFile AvroSchema;
/*public ProcessingService() {
this.sparkConf = new SparkConf().setMaster("Local[*]").setAppName("RSVP");
}
*/
public ProcessingService(SparkConf sparkConf) {
this.sparkConf = sparkConf;
}
public void run() {
try {
System.out.println("*************************STARTED******************************************************");
SparkSession ss = SparkSession.builder().config(this.sparkConf).getOrCreate();
ss.sparkContext().setLogLevel("ERROR");
Dataset<Row> rsvpDT = ss.readStream().
format(KafkaConstants.STREAM_FORMAT).
option("kafka.bootstrap.servers", KafkaConstants.KAFKA_BROKERS).
option("subscribe", KafkaConstants.KAFKA_TOPIC).
option("failOnDataLoss", false).
load();
System.out.println("Print Schema");
rsvpDT.printSchema();
System.out.println("show values*******************************88");
/*
* Dataset<Row> rsvpAndTimestampDF =
* rsvpDT//selectExpr("CAST(value AS STRING)");
* .select(from_json(col("value").cast("string"),
* RSVpSchema.RSVP_SCHEMA).alias("rsvp")) .alias("meetup").select("meetup.*");
*/
Dataset<Row> rsvpAvroDF = rsvpDT.select(package$.MODULE$.from_avro(col("value").cast("BINARY"), LoadResourceFile.AvroSchema)
.alias("rsvp")).alias("meetup").select("meetup.*");
/*
* Dataset<Row> mySqlTableDS = dbExtract.readstudentTable();
* mySqlTableDS.show();
*/
StreamingQuery query = rsvpAvroDF.writeStream().outputMode(OutputMode.Update()).format("console")
.option("path", KafkaConstants.CHECKPOINT_LOCATION)
.option("checkpointLocation", KafkaConstants.CHECKPOINT_LOCATION).option("truncate", false)
.start();
query.awaitTermination();
ss.stop();
} catch (Exception e) {
System.out.println("**************ERROR OCCURED*******************" + e.getMessage());
LOGGER.error(e.getMessage());
}
}
}
包rsvp;
导入org.apache.spark.SparkConf;
导入静态org.apache.spark.sql.functions.col;
从_json导入静态org.apache.spark.sql.functions;
导入org.apache.spark.sql.Dataset;
导入org.apache.spark.sql.Row;
导入org.apache.spark.sql.SparkSession;
导入org.apache.spark.sql.streaming.OutputMode;
导入org.apache.spark.sql.streaming.StreamingQuery;
导入org.apache.log4j.Logger;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.context.annotation.ComponentScan;
导入org.springframework.stereotype.Service;
导入rsvp.util.LoadResourceFile;
导入org.apache.spark.sql.avro.package$;
@服务
@组件扫描({“rsvp.util”})
公共类处理服务{
私有静态记录器=Logger.getLogger(ProcessingService.class);
@自动连线
私人最终SparkConf SparkConf;
@自动连线
私有LoadResourceFile AvroSchema;
/*公共处理服务(){
this.sparkConf=new sparkConf().setMaster(“Local[*]”)。setAppName(“RSVP”);
}
*/
公共处理服务(SparkConf SparkConf){
this.sparkConf=sparkConf;
}
公开募捐{
试一试{
System.out.println(“**********************************************************************************************************************************************************************************************”);
SparkSession ss=SparkSession.builder().config(this.sparkConf.getOrCreate();
ss.sparkContext().setLogLevel(“错误”);
数据集rsvpDT=ss.readStream()。
格式(KafkaConstants.STREAM_格式)。
选项(“kafka.bootstrap.servers”,KafkaConstants.kafka_BROKERS)。
选项(“订阅”,KafkaConstants.KAFKA_主题)。
选项(“failOnDataLoss”,false)。
加载();
System.out.println(“打印模式”);
rsvpDT.printSchema();
System.out.println(“显示值***************************************************88”);
/*
*数据集rsvpAndTimestampDF=
*rsvpDT//selectExpr(“转换(值为字符串)”);
*.select(从_json(col(“value”).cast(“string”),
*RSVpSchema.RSVP_SCHEMA)。别名(“RSVP”)。别名(“meetup”)。选择(“meetup.*);
*/
数据集rsvpAvroDF=rsvpDT.select(包$.MODULE$。来自_avro(col(“value”).cast(“二进制”),LoadResourceFile.AvroSchema)
.别名(“rsvp”)。别名(“meetup”)。选择(“meetup.*);
/*
*数据集mySqlTableDS=dbExtract.readstudentTable();
*mysqltables.show();
*/
StreamingQuery query=rsvpAvroDF.writeStream().outputMode(outputMode.Update()).format(“控制台”)
.选项(“路径”,KafkaConstants.检查点位置)
.option(“checkpointLocation”,KafkaConstants.CHECKPOINT_LOCATION)。option(“truncate”,false)
.start();
query.waittermination();
ss.stop();
}捕获(例外e){
System.out.println(“****************发生错误**********************”+e.getMessage());
LOGGER.error(例如getMessage());
}
}
}
它正在创建空日志文件,为什么?我用错什么了吗?希望继续在同一日志文件中追加日志
请建议
更新:使用try
和catch
块添加了整个代码段
我已经在使用try-catch块,但仍然出现同样的问题,只有.error
能够捕获日志并写入日志文件,但没有其他附加程序
有什么原因吗?因为您使用ALL作为日志级别,所以问题不在于您的LOGGER.debug()
离线代码
问题可能是因为您没有抛出异常。(如果您也添加try块会更好。)首先,您使用
.debug(..)
记录错误,您应该将其更改为.error(..)
。另外,请检查您是否已将日志记录级别相应地设置为debug
(它可能被设置为INFO,这是部署的默认设置)@lunatikz,这样即使我在catch中使用.debug(..),它也不会捕获?这有什么问题?添加了有问题的代码,请选中try显式抛出异常,例如通过抛出新异常(“异常!!”);在try块的第一行中,我认为它根本没有捕获任何异常。另外,您可以尝试使用PropertyConfigurator.configure(“log4j.properties”)显式加载log4j.properties;初始化记录器对象之后。确保log4j.properties位于用于加载类(例如src/main/resources)的搜索路径中。我认为问题出在try块的第3行,您正在将日志级别更改为ERROR:ss.sparkContext().setLogLevel(“ERROR”)代码>