Docker部署Spark大數據組件:配置log4j日志

上一篇《Docker部署Spark大數據組件》中,日志是輸出到console的,如果有將日志輸出到文件的需要,需要進一步配置。

配置將日志同時輸出到console和file

1、停止spark集群

docker-compose down -v

?2、使用自帶log4j日志配置模板配置

cp -f log4j2.properties.template?log4j2.properties

編輯log4j2.properties,進行如下修改;但是,如下方案,日志無法輪轉,也就是說日志一直會寫到spark.log中。

# Set everything to be logged to the console and file

……

rootLogger.appenderRef.file.ref = file

# File appender
appender.file.type = File
appender.file.name = file
appender.file.fileName = spark.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex

3、配置支持日志輪轉

rootLogger.appenderRef.file.ref = file

改為

rootLogger.appenderRef.rolling.ref = rolling

# File appender 下的配置刪掉,增加如下配置:

# RollingFile appender
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = logs/spark.log
appender.rolling.filePattern = logs/spark-%d{yyyy-MM-dd}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 30

可以直接使用如下配置模板:

cat >log4j2.properties <<'EOF'
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## Set everything to be logged to the console and rolling file
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = console
rootLogger.appenderRef.rolling.ref = rolling# Console appender
appender.console.type = Console
appender.console.name = console
appender.console.target = SYSTEM_ERR
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex# RollingFile appender
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = logs/spark.log
appender.rolling.filePattern = logs/spark-%d{yyyy-MM-dd}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 30# Set the default spark-shell/spark-sql log level to WARN. When running the
# spark-shell/spark-sql, the log level for these classes is used to overwrite
# the root logger's log level, so that the user can have different defaults
# for the shell and regular Spark apps.
logger.repl.name = org.apache.spark.repl.Main
logger.repl.level = warnlogger.thriftserver.name = org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver
logger.thriftserver.level = warn# Settings to quiet third party logs that are too verbose
logger.jetty1.name = org.sparkproject.jetty
logger.jetty1.level = warn
logger.jetty2.name = org.sparkproject.jetty.util.component.AbstractLifeCycle
logger.jetty2.level = error
logger.replexprTyper.name = org.apache.spark.repl.SparkIMain$exprTyper
logger.replexprTyper.level = info
logger.replSparkILoopInterpreter.name = org.apache.spark.repl.SparkILoop$SparkILoopInterpreter
logger.replSparkILoopInterpreter.level = info
logger.parquet1.name = org.apache.parquet
logger.parquet1.level = error
logger.parquet2.name = parquet
logger.parquet2.level = error# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
logger.RetryingHMSHandler.name = org.apache.hadoop.hive.metastore.RetryingHMSHandler
logger.RetryingHMSHandler.level = fatal
logger.FunctionRegistry.name = org.apache.hadoop.hive.ql.exec.FunctionRegistry
logger.FunctionRegistry.level = error# For deploying Spark ThriftServer
# SPARK-34128: Suppress undesirable TTransportException warnings involved in THRIFT-4805
appender.console.filter.1.type = RegexFilter
appender.console.filter.1.regex = .*Thrift error occurred during processing of message.*
appender.console.filter.1.onMatch = deny
appender.console.filter.1.onMismatch = neutral
EOF

驗證生效

1、啟動spark集群

2、查看日志文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82978.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx Lua模塊(OpenResty)實戰:動態化、智能化你的Nginx,實現復雜Web邏輯 (2025)

更多服務器知識&#xff0c;盡在hostol.com 嘿&#xff0c;各位Nginx的“鐵桿粉絲”和“配置大師”們&#xff01;咱們都知道&#xff0c;Nginx以其超凡的性能、穩定性和豐富的模塊化功能&#xff0c;在Web服務器、反向代理、負載均衡等領域獨步青云&#xff0c;簡直是服務器軟…

一、CentOS7通過kubeadm安裝K8S 1.20.1版本

一、準備機器 所有節點執行 準備3臺虛擬機&#xff08;2核4G&#xff0c;CentOS 7&#xff09;&#xff0c;配置如下&#xff1a; hostnamectl set-hostname k8s-master # 在Master節點執行 hostnamectl set-hostname k8s-node1 # Worker1節點執行 hostnamectl set-hostna…

AgenticSeek,開源本地通用AI Agent,自主執行任務

AgenticSeek是一款完全本地化的開源AI助手&#xff0c;作為Manus的開源替代品&#xff0c;專為保護用戶隱私而設計。它能夠在本地設備上執行多種任務&#xff0c;包括網頁瀏覽、代碼編寫和復雜項目的規劃&#xff0c;確保所有操作和數據均在用戶的設備上完成。 AgenticSeek是什…

C 語言學習筆記(指針6)

內容提要 內存操作 內存操作的函數 內存操作 我們對于內存操作需要依賴于string.h頭文件中相關的庫函數。 內存的庫函數 內存填充 頭文件&#xff1a;#include <string.h>函數原型 void* memset(void* s, int c, size_t)函數功能&#xff1a;將內存塊s的前n個字節…

Grafana-Gauge儀表盤

儀表盤是一種單值可視化。 可讓您快速直觀地查看某個值落在定義的或計算出的最小和最大范圍內的位置。 通過重復選項&#xff0c;您可以顯示多個儀表盤&#xff0c;每個對應不同的序列、列或行。 支持的數據格式 單值 數據集中只有一個值&#xff0c;會生成一個顯示數值的…

解決Vue項目依賴錯誤:使用electron-vite重建

文章目錄 開端解決方案&#xff1a;使用 electron-vite Vue 重建項目1. 環境準備2. 創建新項目3. 安裝依賴并啟動項目 開端 在開發過程中&#xff0c;我遇到了一個令人頭疼的錯誤提示&#xff1a; 0:0 error Parsing error: Cannot find module vue/cli-plugin-babel/preset…

WPF prism

Prism Prism.Dryloc 包 安裝 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空間, 繼承由 Application → PrismApplication&#xff0c;刪除默認啟動 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

循序漸進PersistentVolumes與PersistentVolumeClaim

文章目錄 靜態配置&#xff08;Static Provisioning&#xff09;&#xff1a;Persistent volume(PV)Local 示例&#xff1a;NFS 示例&#xff1a;檢查pvPV 的常見狀態說明Persistent volume claim(PVC)1. local PVC示例:2.NFS PVC示例:3. 檢查PVC: 掛載靜態供應卷驗證靜態供應卷…

【連接器專題】SD卡座規格書審查需要審哪些方面?

在審查SD卡座規格書時,我們需要考慮哪些方面? 首先在拿到一份SD卡座的詳細規格書時,一般供應商給到的規格書中包括了一些基礎信息、產品圖紙信息、技術參數信息,同時有些供應商會給出產品可靠性測試報告。因此我們會從這幾個要素去看規格書。 基礎信息 基礎信息一般會給變更…

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事項

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事項 要IEEE overleaf 模板私信,我直接給我自己論文,便于編輯 已經投稿完成了,有一些小坑 準備工作 注冊IEEE賬戶:若沒有IEEE賬戶,需前往IEEE官網注冊。注冊成功后,可用于登錄投稿系統。現在新的系統,…

JS入門——三種輸入方式

JS入門——三種輸入方式 一、方式一&#xff1a;直接在警告框彈出(window可以省略) <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script><!-- 方式一直接在警告框彈…

WordPress免費網站模板下載

大背景圖免費wordpress建站模板 這個wordpress模板設計以簡約和專業為主題&#xff0c;旨在為用戶提供清晰、直觀的瀏覽體驗。以下是對其風格、布局和設計理念的詳細介紹&#xff1a; 風格 簡約現代&#xff1a;整體設計采用簡約風格&#xff0c;使用了大量的白色和灰色調&am…

AUTOSAR CP全新系統化培訓上線!從底層到應用,三步階梯,五大學習維度構建完整知識體系

AUTOSAR組織 AUTOSAR官方全新推出「AUTOSAR CP全棧賦能計劃」&#xff0c;從架構全景到模塊細節&#xff0c;自底向上、由淺入深&#xff0c;覆蓋MCAL至SWC全層級&#xff0c;融合通信、診斷、安全等六大核心Feature&#xff0c;帶您穿透復雜理論&#xff0c;直擊AUTOSAR開發本…

Java網絡編程與Socket安全權限詳解

Socket安全權限控制 Java通過java.net.SocketPermission類實現對網絡套接字訪問的細粒度控制。該權限管理機制通常在Java策略文件中配置,其標準授權語法格式如下: grant {permission java.net.SocketPermission"target", "actions"; };目標主機與端口規…

基于本地化大模型的智能編程助手全棧實踐:從模型部署到IDE深度集成學習心得

近年來&#xff0c;隨著ChatGPT、Copilot等AI編程工具的爆發式增長&#xff0c;開發者生產力獲得了前所未有的提升。然而&#xff0c;云服務的延遲、隱私顧慮及API調用成本促使我探索一種更自主可控的方案&#xff1a;基于開源大模型構建本地化智能編程助手。本文將分享我構建本…

視頻監控匯聚平臺EasyCVR安防小知識:如何通過視頻融合平臺解決信息孤島問題?

一、項目背景與需求分析? 隨著數字化技術發展與網絡帶寬升級&#xff0c;視頻技術應用場景不斷拓展&#xff0c;視頻監控、記錄儀等多樣化產品構建起龐大體系。但這些獨立系統彼此割裂&#xff0c;形成信息孤島。 在系統集成項目中&#xff0c;視頻系統深度融合已成必然趨勢…

如何在 Windows 和 Mac 上擦拭和清潔希捷外置硬盤

希捷外置硬盤廣泛用于存儲目的&#xff0c;但有時您可能出于多種目的需要擦除或清潔希捷外置硬盤&#xff0c;例如轉售、重復使用、捐贈等。為了釋放硬盤上的存儲空間或確保沒有人可以從硬盤中恢復您的信息&#xff0c;擦除硬盤是必要的步驟。無論您使用的是 Windows 還是 Mac&…

SAP saml2 元數據 HTTP 錯誤

使?事務 SAML2 或 SAML2_IDP 在 ABAP 系統中配置 SAML 2.0 時&#xff0c; Web 頁?返回 403 已禁?、 404 未找到 或 500 服務器內部錯誤。 在事務 SAML2 中下載元數據時&#xff0c; ?頁返回 403 已禁?、 404 未找到或 500 服務器內部錯誤。 在事務 SAML2_IDP 中下載…

powershell 中 invoke-expression 報錯解決

打開powershell就出現這個報錯&#xff1a; 網上搜了也沒有很好的解決辦法&#xff0c;抱著一點點期待&#xff0c;問了豆包 根據豆包的指示&#xff0c;在終端執行以下 幾個命令&#xff0c;報錯解決了&#xff08;開心萬歲&#xff09; # 移除多余的引號和空路徑 $pathArra…

簡單說一說Modern ABAP這個概念

Modern ABAP 是 SAP近些年來提出的一個概念&#xff0c;指的是在傳統 ABAP (Advanced Business Application Programming) 的基礎上&#xff0c;結合新技術和現代化編程理念進行改進和優化&#xff0c;旨在使 ABAP 更適應云計算、數據驅動業務以及開發效率提升的需求。 這一概…