คำถามติดแท็ก logging

การบันทึกข้อมูลคอมพิวเตอร์เป็นกระบวนการบันทึกเหตุการณ์ในโปรแกรมคอมพิวเตอร์โดยปกติจะมีขอบเขตที่แน่นอนเพื่อให้มีหลักฐานการตรวจสอบที่สามารถใช้เพื่อทำความเข้าใจเกี่ยวกับกิจกรรมของระบบและวินิจฉัยปัญหา

3
ประโยชน์ของการบันทึกอย่างมีโครงสร้างเทียบกับการบันทึกขั้นพื้นฐาน
เรากำลังสร้างแอปใหม่และฉันต้องการรวมการบันทึกที่มีโครงสร้าง การตั้งค่าในอุดมคติของฉันจะเป็นสิ่งที่ต้องการSerilogสำหรับรหัส C # Bunyanของเราและสำหรับ JS ของเรา เหล่านี้จะป้อนเข้าสู่fluentdแล้วจะออกไปจำนวนของสิ่งใด ๆ elasticsearch + kibanaที่ผมคิดในตอนแรก เรามีฐานข้อมูล MySQL อยู่แล้วดังนั้นในระยะสั้นฉันสนใจที่จะติดตั้ง Serilog + Bunyan มากขึ้นและผู้ใช้สามารถใช้งานได้และเราสามารถเข้าสู่ระบบ MySQL ได้ในขณะที่เราใช้เวลาเพิ่มขึ้นเล็กน้อยและส่วนที่เหลือ อย่างไรก็ตามหนึ่งในนักเขียนโค้ดที่มีประสบการณ์มากกว่าของเราต้องการทำสิ่งที่ชอบ: การlog.debug("Disk quota {0} exceeded by user {1}", quota, user);ใช้log4netและจากนั้นก็เรียกใช้คำสั่งที่เลือกกับ MySQL เช่น:SELECT text FROM logs WHERE text LIKE "Disk quota"; ที่ถูกกล่าวว่าวิธีใดดีกว่าและ / หรือสิ่งใดที่เราต้องพิจารณาเมื่อเลือกประเภทของระบบบันทึก
110 c#  javascript  mysql  logging 

6
ทำไมระดับ TRACE ถึงมีอยู่และฉันควรใช้เมื่อใดแทนที่จะใช้ DEBUG
ใน Log4J, Slf4J และเฟรมเวิร์กการบันทึกอื่น ๆ อีกสองสามรายการใน Java คุณมีระดับ "developper" สองระดับสำหรับการบันทึก: DEBUG ติดตาม ฉันเข้าใจสิ่งที่ DEBUG ทำเพราะคำอธิบายนั้นชัดเจน: ระดับ DEBUG กำหนดเหตุการณ์ข้อมูลที่ละเอียดซึ่งมีประโยชน์มากที่สุดในการดีบักแอปพลิเคชัน แต่ระดับ TRACE นั้นไม่เฉพาะเจาะจงมากเกี่ยวกับกรณีการใช้งาน: ระดับ TRACE กำหนดเหตุการณ์ข้อมูลที่ละเอียดกว่า DEBUG (ที่มา: log4J JavaDoc ) สิ่งนี้ไม่ได้บอกวิธีการใช้ TRACE ที่น่าสนใจนี้ไม่ได้เป็นระดับความรุนแรงที่กำหนดไว้ในมาตรฐาน syslog Googling สำหรับความแตกต่างระหว่าง TRACE และ DEBUG ดูเหมือนจะกลับมา "ใช้ DEBUG, โอ้และมี TRACE ด้วย" ฉันไม่พบกรณีการใช้งานเฉพาะสำหรับระดับ TRACE สิ่งที่ดีที่สุดที่ฉันสามารถหาได้คือหน้าวิกิเก่านี้กำลังถกกันถึงข้อดีของการมีอยู่ ในฐานะสถาปนิกผู้นี้ได้ยกธงและคำถามมากมายในหัวของฉัน หากผู้พัฒนารายย่อยขอให้ฉันเพิ่ม TRACE …
82 java  logging 

14
ทำไมไฟล์บันทึกส่วนใหญ่จึงใช้ข้อความธรรมดามากกว่ารูปแบบไบนารี่
การบันทึกเป็นสิ่งที่จำเป็น แต่ไม่ค่อยมีการใช้ (ค่อนข้าง) ด้วยเหตุนี้จึงสามารถทำให้มีขนาดเล็กลงได้มากขึ้นในแง่ของการจัดเก็บ ตัวอย่างเช่นข้อมูลที่บันทึกบ่อยที่สุดเช่น ip, วันที่, เวลาและข้อมูลอื่น ๆ ที่สามารถแสดงเป็นจำนวนเต็มจะถูกเก็บไว้เป็นข้อความ หากการบันทึกถูกเก็บไว้เป็นข้อมูลไบนารีพื้นที่จำนวนมากสามารถรักษาไว้ได้ดังนั้นจึงต้องใช้การหมุนน้อยลงและเพิ่มอายุการใช้งานดิสก์โดยเฉพาะกับ SSD ที่การเขียน จำกัด บางคนอาจบอกว่ามันเป็นปัญหาเล็กน้อยที่ไม่สำคัญ แต่เมื่อคำนึงถึงความพยายามที่จำเป็นในการสร้างกลไกดังกล่าว ทุกคนสามารถทำสิ่งนี้ได้เหมือนสองวันในเวลาว่างทำไมคนไม่ทำเช่นนี้?
81 logging  storage 

9
รูปแบบและรูปแบบต่อต้านการบันทึกแอปพลิเคชันคืออะไร [ปิด]
เมื่อเร็ว ๆ นี้ฉันต้องตรวจสอบปัญหาฟิลด์สำหรับแอปพลิเคชันองค์กรขนาดใหญ่ของเรา ฉันรู้สึกตกใจกับบันทึกที่ต้องใช้ในการพยายามค้นหาปัญหาและในตอนท้ายของวันบันทึกไม่ได้ช่วยในการระบุ / แยกข้อผิดพลาดทั้งหมด หมายเหตุ: ฉันเข้าใจว่าไม่ใช่ข้อบกพร่องทั้งหมดที่ค้นพบผ่านบันทึก สิ่งนี้ไม่เปลี่ยนความจริงที่ว่าบันทึกนั้นน่ากลัว มีปัญหาบางประการที่ชัดเจนเกี่ยวกับการบันทึกของเราที่เราสามารถพยายามแก้ไขได้ ฉันไม่ต้องการแสดงรายการไฟล์เหล่านี้ที่นี่และฉันไม่สามารถแสดงไฟล์บันทึกของเราเพื่อให้คุณสามารถให้คำแนะนำเกี่ยวกับสิ่งที่ต้องทำ แต่เพื่อที่จะประเมินว่าเรากำลังทำเรื่องเลวร้ายต่อหน้าการบันทึกผมอยากจะรู้ว่า: มีแนวทางอะไรบ้างถ้ามีเมื่อพูดถึงการบันทึกแอปพลิเคชันโดยเฉพาะแอปพลิเคชันขนาดใหญ่ มีรูปแบบใดที่เราควรทำตามหรือรูปแบบต่อต้านที่เราควรระวัง? นี่เป็นสิ่งสำคัญในการแก้ไขหรือสามารถแก้ไขได้หรือไฟล์บันทึกทั้งหมดมีขนาดใหญ่และคุณต้องการสคริปต์เพิ่มเติมเพื่อวิเคราะห์ หมายเหตุด้านข้าง: เราใช้ log4j
66 logging 

3
แนวทางปฏิบัติที่ดีที่สุดสำหรับการบันทึกและติดตามใน. NET
ฉันได้อ่านเกี่ยวกับการติดตามและการบันทึกจำนวนมากพยายามค้นหากฎทองสำหรับแนวทางปฏิบัติที่ดีที่สุดในเรื่องนี้ แต่ก็ยังไม่มีเลย ผู้คนบอกว่าโปรแกรมเมอร์ที่ดีจะสร้างการติดตามที่ดี แต่เอามาเป็นอย่างนั้นและมันต้องมาจากประสบการณ์ ฉันได้อ่านคำถามที่คล้ายกันในที่นี่และผ่านทางอินเทอร์เน็ตและพวกเขาไม่ได้เป็นสิ่งเดียวกันกับที่ฉันถามหรือไม่มีคำตอบที่น่าพอใจบางทีอาจเป็นเพราะคำถามนั้นขาดรายละเอียด ดังนั้นคนพูดว่าการติดตามควรเรียงลำดับของการจำลองประสบการณ์การใช้งานในกรณีที่คุณไม่สามารถแนบดีบักเกอร์ ควรให้บริบทเพียงพอเพื่อให้คุณสามารถดูว่าพา ธ ใดถูกนำไปที่แต่ละจุดควบคุมในแอปพลิเคชัน ยิ่งไปกว่านั้นคุณยังสามารถแยกแยะความแตกต่างระหว่างการติดตามและการบันทึกเหตุการณ์ใน "การบันทึกเหตุการณ์จะแตกต่างจากการติดตามที่จะจับภาพสถานะที่สำคัญมากกว่าการไหลอย่างละเอียดของการควบคุม" ตอนนี้บอกว่าฉันต้องการทำการติดตามและการบันทึกโดยใช้คลาส. NET มาตรฐานเท่านั้นซึ่งอยู่ในSystem.Diagnosticsเนมสเปซ ฉันคิดว่าคลาส TraceSource นั้นดีกว่าสำหรับงานมากกว่าคลาส Trace คงเพราะฉันต้องการแยกความแตกต่างระหว่างระดับการติดตามและการใช้คลาส TraceSource ฉันสามารถส่งผ่านพารามิเตอร์แจ้งประเภทเหตุการณ์ในขณะที่ใช้คลาส Trace ที่ฉันต้องใช้Trace.WriteLineIfและตรวจสอบสิ่งที่ชอบSourceSwitch.TraceInformationและSourceSwitch.TraceErrorsและมันก็ไม่ได้มีคุณสมบัติเหมือนหรือTraceVerboseTraceStart ในใจคุณจะพิจารณาการฝึกฝนที่ดีให้ทำดังนี้: ติดตามเหตุการณ์ "เริ่มต้น" เมื่อเริ่มต้นเมธอดซึ่งควรแสดงถึงการดำเนินการเชิงตรรกะเดี่ยวหรือไพพ์ไลน์พร้อมกับการแทนค่าสตริงของค่าพารามิเตอร์ที่ส่งผ่านไปยังเมธอด ติดตามเหตุการณ์ "ข้อมูล" เมื่อแทรกรายการลงในฐานข้อมูล ติดตามเหตุการณ์ "ข้อมูล" เมื่อรับหนึ่งพา ธ หรืออย่างอื่นในคำสั่ง if / else ที่สำคัญ ติดตาม "Critical" หรือ "Error" ใน catch catch ขึ้นอยู่กับว่าเป็นข้อผิดพลาดที่สามารถกู้คืนได้ ติดตามเหตุการณ์ "หยุด" เมื่อเสร็จสิ้นการดำเนินการของวิธีการ …
53 .net  logging 

9
เราจำเป็นต้องทำการบันทึกเมื่อทำ TDD หรือไม่?
เมื่อทำการ Red, Green & Refactor cycle เราควรเขียนโค้ดขั้นต่ำเพื่อผ่านการทดสอบ นี่คือวิธีที่ฉันได้รับการสอนเกี่ยวกับ TDD และวิธีที่หนังสือเกือบทั้งหมดบรรยายกระบวนการ แต่สิ่งที่เกี่ยวกับการเข้าสู่ระบบ? จริงๆแล้วฉันไม่ค่อยได้ใช้การบันทึกในแอพพลิเคชั่นเว้นแต่มีบางสิ่งที่ซับซ้อนจริงๆที่เกิดขึ้นอย่างไรก็ตามฉันได้เห็นโพสต์มากมายที่พูดถึงความสำคัญของการบันทึกที่เหมาะสม ดังนั้นนอกเหนือจากการบันทึกข้อยกเว้นฉันไม่สามารถพิสูจน์ความสำคัญที่แท้จริงของการบันทึกในแอปพลิเคชันที่ผ่านการทดสอบที่เหมาะสม (การทดสอบหน่วย / การรวม / การยอมรับ) ดังนั้นคำถามของฉันคือ: เราจำเป็นต้องเข้าสู่ระบบหากเรากำลังทำ TDD อยู่หรือไม่? การทดสอบที่ล้มเหลวจะไม่เปิดเผยว่ามีอะไรผิดปกติกับแอปพลิเคชันหรือไม่ เราควรเพิ่มการทดสอบสำหรับกระบวนการบันทึกในแต่ละวิธีในแต่ละคลาสหรือไม่ หากระดับการบันทึกบางส่วนถูกปิดใช้งานในสภาพแวดล้อมการผลิตเช่นนั้นจะไม่แนะนำการพึ่งพาระหว่างการทดสอบและสภาพแวดล้อมหรือไม่? ผู้คนพูดถึงวิธีที่ง่ายในการดีบัก แต่หนึ่งในข้อดีหลักเกี่ยวกับ TDD คือฉันมักจะรู้ว่ามีอะไรผิดปกติเนื่องจากการทดสอบที่ล้มเหลว มีบางอย่างที่ฉันพลาดไปไหม

6
ทำให้การค้นหารหัสโดยใช้รหัสข้อความที่ไม่ซ้ำกันทั่วโลก
รูปแบบทั่วไปสำหรับการค้นหาจุดบกพร่องตามสคริปต์นี้: สังเกตความแปลกประหลาดเช่นไม่มีเอาต์พุตหรือโปรแกรมหยุดทำงาน ค้นหาข้อความที่เกี่ยวข้องในบันทึกหรือผลลัพธ์ของโปรแกรมเช่น "ไม่พบ Foo" (ข้อมูลต่อไปนี้เกี่ยวข้องเฉพาะในกรณีที่เป็นเส้นทางที่ใช้ในการค้นหาจุดบกพร่องหากการติดตามสแต็กหรือข้อมูลการดีบักอื่น ๆ พร้อมใช้งานนั่นเป็นอีกเรื่องหนึ่ง) ค้นหารหัสที่ข้อความถูกพิมพ์ ตรวจแก้จุดบกพร่องรหัสระหว่างสถานที่แรกที่ Foo ป้อน (หรือควรป้อน) รูปภาพและที่พิมพ์ข้อความ ขั้นตอนที่สามนั้นเป็นขั้นตอนที่กระบวนการดีบั๊กมักจะหยุดชะงักเนื่องจากมีหลายสถานที่ในรหัสที่พิมพ์ "ไม่พบ Foo" (หรือสตริงเทมเพลตCould not find {name}) ในความเป็นจริงการสะกดผิดหลายครั้งช่วยให้ฉันค้นหาตำแหน่งจริงได้เร็วกว่าที่ฉันคาดไว้ - ทำให้ข้อความที่ไม่ซ้ำกันในทั้งระบบและบ่อยครั้งทั่วโลกส่งผลให้เครื่องมือค้นหาที่เกี่ยวข้องเข้าชมทันที ข้อสรุปที่ชัดเจนจากสิ่งนี้คือเราควรใช้รหัสข้อความที่ไม่ซ้ำกันทั่วโลกในรหัสการเข้ารหัสอย่างหนักเป็นส่วนหนึ่งของสตริงข้อความและอาจตรวจสอบว่ามีการเกิดขึ้นเพียงครั้งเดียวของแต่ละ ID ในฐานรหัส ในแง่ของการบำรุงรักษาชุมชนนี้คิดว่าอะไรคือข้อดีและข้อเสียที่สำคัญที่สุดของวิธีการนี้และคุณจะใช้งานวิธีนี้อย่างไรหรือจะทำให้แน่ใจได้อย่างไรว่าการดำเนินการนั้นไม่จำเป็นเลย (สมมติว่าซอฟต์แวร์

11
การเข้าสู่ระบบ: ทำไมและอะไร [ปิด]
ฉันไม่เคยเขียนโปรแกรมที่ใช้ประโยชน์จากการบันทึกอย่างมีนัยสำคัญ สิ่งที่ฉันทำมากที่สุดคือการจับภาพร่องรอยสแต็กเมื่อมีข้อยกเว้นเกิดขึ้น ฉันสงสัยว่าคนอื่นเข้าสู่ระบบมากแค่ไหน? แอปพลิเคชันที่คุณเขียนนั้นขึ้นอยู่กับประเภทใด คุณพบว่าบันทึกมีประโยชน์จริงหรือไม่

7
เหตุใด“ การอ้างอิงวัตถุไม่ได้ถูกตั้งค่าเป็นอินสแตนซ์ของวัตถุ” บอกเราว่าวัตถุใด
เรากำลังเปิดตัวระบบและบางครั้งเราได้รับข้อยกเว้นที่มีชื่อเสียงพร้อมกับข้อความNullReferenceExceptionObject reference not set to an instance of an object อย่างไรก็ตามในวิธีการที่เรามีวัตถุเกือบ 20 ชิ้นการมีบันทึกซึ่งบอกว่าวัตถุนั้นเป็นโมฆะนั้นไม่มีประโยชน์เลย มันเหมือนกับบอกคุณว่าเมื่อคุณเป็นตัวแทนความปลอดภัยของการสัมมนาคนหนึ่งใน 100 คนเป็นผู้ก่อการร้าย มันไม่มีประโยชน์กับคุณเลย คุณควรได้รับข้อมูลเพิ่มเติมหากคุณต้องการตรวจสอบว่าชายคนไหนเป็นคนที่คุกคาม ในทำนองเดียวกันถ้าเราต้องการที่จะลบข้อผิดพลาดเราจำเป็นต้องรู้ว่าวัตถุใดเป็นโมฆะ ตอนนี้มีบางอย่างหมกมุ่นอยู่ในใจฉันมาหลายเดือนแล้วและนั่นก็คือ: เหตุใด. NET จึงไม่ให้ชื่อเราหรืออย่างน้อยก็ประเภทของการอ้างอิงวัตถุซึ่งเป็นโมฆะ? . ไม่เข้าใจประเภทจากการสะท้อนกลับหรือแหล่งอื่น ๆ นอกจากนี้แนวปฏิบัติที่ดีที่สุดที่จะเข้าใจว่าวัตถุใดเป็นโมฆะ? เราควรทดสอบความสามารถของวัตถุในบริบทเหล่านี้ด้วยตนเองเสมอและบันทึกผลลัพธ์หรือไม่ มีวิธีที่ดีกว่า? อัปเดต: ข้อยกเว้นThe system cannot find the file specifiedมีลักษณะเดียวกัน คุณไม่พบไฟล์ใดจนกว่าคุณจะแนบกับกระบวนการและดีบัก ฉันเดาว่าข้อยกเว้นประเภทนี้จะฉลาดขึ้น มันจะดีกว่าไหมถ้า. NET สามารถบอกเราc:\temp.txt doesn't exist.แทนข้อความทั่วไปได้? ในฐานะนักพัฒนาฉันลงคะแนนใช่

2
คุณควรเข้าสู่ระบบจากรหัสห้องสมุด?
ถ้าฉันพัฒนาห้องสมุด Java มันเป็นวิธีที่ดีในการออกคำสั่งบันทึกจากภายในรหัสของห้องสมุดหรือไม่ การมีการบันทึกภายในไลบรารีจะทำให้การดีบักและการแก้ไขปัญหาโปร่งใสขึ้น อย่างไรก็ตามในทางกลับกันฉันไม่ชอบทิ้งขยะไลบรารีของฉันด้วยคำสั่งการบันทึก มีความหมายของประสิทธิภาพที่จะต้องพิจารณาด้วยหรือไม่?
38 java  logging 

4
วิธีที่ถูกต้องในการจัดการกับการแก้ปัญหาการส่งออกใน Java คืออะไร
ในขณะที่โครงการ Java ปัจจุบันของฉันเติบโตขึ้นเรื่อย ๆ ฉันรู้สึกว่าจำเป็นที่จะต้องเพิ่มการดีบักเอาต์พุตในหลาย ๆ จุดของโค้ดของฉัน หากต้องการเปิดใช้งานหรือปิดใช้งานคุณลักษณะนี้อย่างเหมาะสมขึ้นอยู่กับการเปิดหรือปิดเซสชันการทดสอบฉันมักจะใส่private static final boolean DEBUG = falseจุดเริ่มต้นของชั้นเรียนที่การทดสอบของฉันกำลังตรวจสอบอยู่และใช้วิธีนี้เล็กน้อย (เช่น): public MyClass { private static final boolean DEBUG = false; ... some code ... public void myMethod(String s) { if (DEBUG) { System.out.println(s); } } } และไม่ชอบ แต่นั่นไม่ได้ทำให้ฉันสุขใจเพราะแน่นอนว่ามันใช้ได้ แต่อาจมีหลายคลาสเกินไปที่จะตั้งค่า DEBUG ให้เป็นจริงถ้าคุณไม่จ้องมองเพียงสองสามคน ในทางกลับกันฉัน (เหมือน - ฉันคิดว่า …

4
เข้าสู่ระบบไฟล์ข้อความหรือฐานข้อมูล?
ฉันควรใช้ฐานข้อมูลสำหรับการบันทึกและเมื่อใดที่ไฟล์ข้อความ? ฉันเห็นว่าเว็บเซิร์ฟเวอร์และเว็บเฟรมเวิร์ก (ที่แอปของคุณใช้ภายใน) โดยปกติ (เสมอ?) บันทึกคำขอและข้อผิดพลาดลงในไฟล์ข้อความโดยค่าเริ่มต้น แต่ฉันเห็นว่าคนที่พัฒนาแอปของพวกเขารอบ ๆ เซิร์ฟเวอร์และเฟรมเวิร์กบางครั้งก็ล็อกอินเข้าสู่ฐานข้อมูล (แม้แต่ฐานข้อมูลหลักของแอพ อาจมีความแตกต่างระหว่างบันทึกการดีบักและบันทึกการตรวจสอบ - ฉันได้อ่านการจัดหมวดหมู่นี้บางแห่งในเว็บไซต์นี้
25 logging 

2
การล็อกอินใน JSON Effect ต่อประสิทธิภาพ
ฉันเห็นบทความเกี่ยวกับการเข้าสู่ระบบ JSON มากขึ้น คุณสามารถค้นหาได้จากบล็อกของ NodeJS ทำไมทุกคนชอบมันมาก ฉันเห็นการดำเนินการเพิ่มเติมที่เกี่ยวข้องเท่านั้น: วัตถุใหม่สองสามชิ้นที่ถูกสร้างขึ้น วัตถุ Stringifying ซึ่งเกี่ยวข้องกับการคำนวณความยาวสตริงหรือการจัดสรรสตริงหลายรายการ GCing อึทั้งหมดที่ถูกสร้างขึ้น มีการทดสอบประสิทธิภาพเมื่อใช้การบันทึก JSON และการบันทึกสตริงปกติหรือไม่ ผู้คนใช้ JSON (เพื่อเข้าสู่ระบบ) ในโครงการขององค์กรหรือไม่
22 logging  json 

7
แนวทางปฏิบัติที่ดีที่สุดสำหรับการบันทึกการทำงานของผู้ใช้ในการผลิต
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันวางแผนที่จะบันทึกสิ่งต่าง ๆ มากมายในสภาพแวดล้อมการผลิตของฉันสิ่งต่าง ๆ เช่นเมื่อผู้ใช้: เข้าสู่ระบบออกจากระบบ เปลี่ยนโปรไฟล์ แก้ไขการตั้งค่าบัญชี เปลี่ยนรหัสผ่าน ... ฯลฯ นี่เป็นวิธีปฏิบัติที่ดีที่จะทำกับสภาพแวดล้อมการผลิตหรือไม่? ยังเป็นวิธีที่ดีในการเข้าสู่ระบบทั้งหมดนี้คืออะไร ฉันกำลังใช้บล็อครหัสต่อไปนี้เพื่อเข้าสู่ระบบ: public void LogMessageToFile(string msg) { System.IO.StreamWriter sw = System.IO.File.AppendText( GetTempPath() + @"MyLogFile.txt"); try { string logLine = System.String.Format( "{0:G}: {1}.", System.DateTime.Now, msg); sw.WriteLine(logLine); } finally …
22 c#  asp.net  logging 

6
การบันทึกถัดจากการใช้งานเป็นการละเมิด SRP หรือไม่
เมื่อคิดถึงการพัฒนาซอฟต์แวร์ที่คล่องตัวและหลักการทั้งหมด (SRP, OCP, ... ) ฉันถามตัวเองว่าจะจัดการการบันทึกอย่างไร การบันทึกถัดจากการใช้งานเป็นการละเมิด SRP หรือไม่ ฉันจะบอกว่าyesเพราะการใช้งานควรจะสามารถทำงานได้โดยไม่ต้องเข้าสู่ระบบ ดังนั้นฉันจะใช้การบันทึกในวิธีที่ดีกว่าได้อย่างไร ฉันได้ตรวจสอบรูปแบบบางอย่างและได้ข้อสรุปว่าวิธีที่ดีที่สุดที่จะไม่ละเมิดหลักการในแบบที่ผู้ใช้กำหนด แต่เพื่อใช้รูปแบบใด ๆ ที่ทราบว่าละเมิดหลักการก็คือใช้รูปแบบมัณฑนากร สมมติว่าเรามีส่วนประกอบจำนวนมากโดยไม่มีการละเมิด SRP จากนั้นเราต้องการเพิ่มการบันทึก องค์ประกอบ A องค์ประกอบ B ใช้ A เราต้องการบันทึกสำหรับ A ดังนั้นเราจึงสร้างส่วนประกอบอีก D ที่ตกแต่งด้วย A ทั้งสองใช้อินเตอร์เฟส I อินเตอร์เฟส I component L (บันทึกองค์ประกอบของระบบ) องค์ประกอบ A ใช้ I component D ใช้ I, ตกแต่ง / ใช้ A, ใช้ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.