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

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

6
ลอง / จับ / บันทึก / Rethrow - เป็นรูปแบบการต่อต้านหรือไม่
ฉันสามารถดูโพสต์ได้หลายแห่งซึ่งมีความสำคัญของการจัดการข้อยกเว้นที่ตำแหน่งศูนย์กลางหรือที่ขอบเขตกระบวนการได้รับการเน้นว่าเป็นแนวปฏิบัติที่ดีแทนที่จะทิ้งขยะบล็อคโค้ดทุกอันรอบลอง / จับ ฉันเชื่ออย่างยิ่งว่าพวกเราส่วนใหญ่เข้าใจถึงความสำคัญของมัน แต่ฉันเห็นคนยังคงลงท้ายด้วยรูปแบบการป้องกัน catch-log-rethrow เป็นหลักเพราะเพื่อความสะดวกในการแก้ไขปัญหาในระหว่างการยกเว้นพวกเขาต้องการบันทึกข้อมูลเฉพาะบริบทเพิ่มเติม ผ่าน) และวิธีคือการห่อวิธีรอบลอง / catch / log / rethrow public static bool DoOperation(int num1, int num2) { try { /* do some work with num1 and num2 */ } catch (Exception ex) { logger.log("error occured while number 1 = {num1} and number 2 = …

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

8
ฉันควรบันทึกข้อผิดพลาดเกี่ยวกับข้อยกเว้นการสร้างคอนสตรัคเตอร์หรือไม่
ฉันกำลังสร้างแอปพลิเคชันอยู่สองสามเดือนและฉันก็ตระหนักถึงรูปแบบที่ปรากฏ: logger.error(ERROR_MSG); throw new Exception(ERROR_MSG); หรือเมื่อจับ: try { // ...block that can throw something } catch (Exception e) { logger.error(ERROR_MSG, e); throw new MyException(ERROR_MSG, e); } ดังนั้นเมื่อใดก็ตามที่ฉันโยนหรือจับข้อยกเว้นฉันจะเข้าสู่ระบบ อันที่จริงแล้วนั่นเป็นการบันทึกเกือบทั้งหมดที่ฉันทำในแอปพลิเคชัน ดังนั้นในฐานะโปรแกรมเมอร์ฉันหลีกเลี่ยงการทำซ้ำ ดังนั้นฉันตัดสินใจย้ายตัวบันทึกไปยังการสร้างข้อยกเว้นดังนั้นเมื่อใดก็ตามที่ฉันกำลังสร้างข้อยกเว้นสิ่งต่าง ๆ จะถูกบันทึกไว้ แน่นอนฉันสามารถสร้าง ExceptionHelper ซึ่งทำให้เกิดข้อยกเว้นสำหรับฉันได้ แต่นั่นจะทำให้รหัสของฉันยากต่อการตีความและยิ่งกว่านั้นคอมไพเลอร์ก็ไม่สามารถจัดการกับมันได้โดยไม่เข้าใจว่าจะมีการโทรหาสมาชิกคนนั้น โยนทันที ดังนั้นนี่เป็นรูปแบบการต่อต้านหรือไม่ ถ้าเป็นเช่นนั้นทำไม

2
มันมีเหตุผลหรือไม่ที่จะบันทึกข้อยกเว้นใน catch-all หรือในคลาส exception ยกเว้น?
ฉันอยู่ระหว่างการเปลี่ยนโครงสร้างแอปพลิเคชันเว็บที่ค่อนข้างใหญ่ หนึ่งในปัญหาที่สำคัญคือการจัดการข้อผิดพลาดที่ไม่สอดคล้องกันและฉันกำลังพยายามหากลยุทธ์ที่เหมาะสม ฉันได้สร้างตัวจัดการข้อผิดพลาดที่กำหนดเองผ่านset_error_handlerซึ่งจะเปลี่ยนข้อผิดพลาดของ PHP ในErrorExceptionsและคลาสยกเว้นฐานที่กำหนดเองซึ่งสืบทอดจากExceptionโดยตรง ในการผลิตฉันใช้ catch-all exception ทั่วไปผ่านset_exception_handlerและฉันกำลังจะเพิ่มการบันทึก exception *ให้กับ mix ขึ้นเขียงของฉันคือที่ที่จะทำการบันทึกที่แท้จริงในคลาสยกเว้นฐานหรือใน catch-all ฉันคิดถึงเหตุผลสองสามข้อในการเข้าสู่ระบบทั้งหมด: มีข้อยกเว้นเล็กน้อยในโค้ดที่ต้องแปลงเป็นชายด์ที่เหมาะสมของคลาส exception พื้นฐาน จนกว่าสิ่งนั้นจะเกิดขึ้นจะไม่มีการบันทึกข้อยกเว้นทั้งหมด มันรู้สึกเป็นธรรมชาติมากขึ้นที่จะทำใน catch-all คลาสยกเว้นฐานไม่ควรทำมากกว่าแค่นั้น (อาจเป็นสิ่งที่หลักการความรับผิดชอบเดียว แต่มันอาจเป็นความรู้สึกที่เข้าใจผิด) และเหตุผลหนึ่งในการเข้าสู่คลาสยกเว้นฐาน: ปัจจุบัน catch-all ใช้กับการผลิตเท่านั้น มันจะง่ายต่อการแนะนำในสภาพแวดล้อมอื่น ๆ ของเรา (การพัฒนาการทดสอบ) แต่ที่จะเรียกร้องให้มีการปรับเปลี่ยนเล็กน้อยเนื่องจากข้อผิดพลาดจะได้รับการจัดการแตกต่างกันไปตามสภาพแวดล้อมเช่นเดียวกับการผลิต มีวิธีปฏิบัติที่ยอมรับได้สำหรับการบันทึกข้อยกเว้นหรือไม่ * การบันทึกจะเกี่ยวข้องกับการเขียนไปยังไฟล์ข้อความในตอนแรกและมันอาจพัฒนาไปสู่การส่งอีเมลสำหรับข้อยกเว้นบางประเภท คำอธิบายบางอย่างได้รับแจ้งจากคำตอบของ @ unholysampler : ฉันกำลังเผชิญกับโค้ดเบส sloc ขนาด 2 * 10 ^ 6 พร้อมสิ่งต่าง ๆ …

3
เหตุใดจึงสร้างวัตถุ Logger แทนที่จะใช้วิธีการบันทึกแบบคงที่ทั่วทั้งแอปพลิเคชัน
ยกตัวอย่างของแอพพลิเคชั่น Ruby on Rails แบบง่าย ๆ มันสร้างLoggerวัตถุในระหว่างกระบวนการโหลดแอปพลิเคชัน: # in environment.rb config.logger = Logger.new(<STDOUT | file | whatever>) # and in our application we use this object logger.warn "This process is taking too long to process. Optimization needed." คำถามของฉันคือทำไมเราไม่ใช้วิธีการเรียน (หรือวิธีการคงที่) สำหรับการเข้าสู่ระบบ? จะไม่Logger.warnขยายมากกว่าLogger.new.warn? หรืออย่างน้อยดูเหมือนว่าใช้งานง่ายกว่าLogger.warnLogger.new.warn แม้ว่าLogger.newจะเป็นวัตถุซิงเกิลตันมันมีข้อดีอะไรบ้าง?

6
วิธีที่ดีที่สุดในการจัดการการบันทึกข้อผิดพลาดสำหรับข้อยกเว้นคืออะไร
บทนำ หากมีข้อผิดพลาดเกิดขึ้นในเว็บไซต์หรือระบบแน่นอนว่ามีประโยชน์ในการบันทึกและแสดงข้อความสุภาพพร้อมรหัสอ้างอิงสำหรับข้อผิดพลาด และถ้าคุณมีระบบจำนวนมากคุณไม่ต้องการให้ข้อมูลนี้กระจายไปทั่ว - มันเป็นการดีที่จะมีศูนย์กลางรวมอยู่ที่เดียว ในระดับที่ง่ายที่สุดสิ่งที่จำเป็นทั้งหมดคือรหัสที่เพิ่มขึ้นและการดัมพ์แบบต่อเนื่องของรายละเอียดข้อผิดพลาด (และอาจเป็น "ศูนย์รวม" ที่เป็นกล่องจดหมายของอีเมล) ที่ปลายอีกด้านของสเปกตรัมอาจเป็นฐานข้อมูลปกติที่ช่วยให้คุณกดปุ่มและดูกราฟข้อผิดพลาดต่อวันหรือระบุว่าข้อผิดพลาดประเภทใดที่พบบ่อยที่สุดในระบบ X คือเซิร์ฟเวอร์ A มีฐานข้อมูลมากกว่าหรือไม่ ข้อผิดพลาดการเชื่อมต่อกว่าเซิร์ฟเวอร์ B และอื่น ๆ สิ่งที่ฉันอ้างถึงที่นี่คือการบันทึกข้อผิดพลาด / ข้อยกเว้นระดับรหัสโดยระบบรีโมต - ไม่ใช่การติดตามปัญหา "ตามมนุษย์" เช่นเสร็จสิ้นกับ Jira, Trac เป็นต้น คำถาม ฉันกำลังมองหาแนวคิดจากนักพัฒนาที่ใช้ระบบประเภทนี้โดยเฉพาะเกี่ยวกับ: ฟีเจอร์สำคัญที่คุณขาดไม่ได้คืออะไร? อะไรคือสิ่งที่ดีที่มีคุณสมบัติที่ช่วยให้คุณประหยัดเวลาได้จริง? คุณลักษณะใดบ้างที่อาจเป็นความคิดที่ดี แต่จริงๆแล้วมันไม่มีประโยชน์อะไรเลย ตัวอย่างเช่นฉันว่าฟังก์ชัน "แสดงรายการที่ซ้ำกัน" ซึ่งระบุข้อผิดพลาดหลายครั้ง (โดยไม่ต้องกังวลเกี่ยวกับรายละเอียด 'ไม่สำคัญ' ที่อาจแตกต่างกัน) เป็นสิ่งสำคัญ ปุ่มสำหรับ "สร้างปัญหาใน [Jira / etc] สำหรับข้อผิดพลาดนี้" ฟังดูเหมือนเป็นการประหยัดเวลาได้ดี สิ่งที่ฉันตามมาคือประสบการณ์การใช้งานจริงจากผู้คนที่ใช้ระบบดังกล่าวโดยเฉพาะการสำรองข้อมูลด้วยเหตุใดคุณลักษณะจึงยอดเยี่ยม / …

5
เมื่อใดจะเริ่มเขียนการจัดการข้อยกเว้นการบันทึก
คุณจะเริ่มเขียนโค้ดจัดการข้อยกเว้นเมื่อใด คุณเริ่มเขียนคำสั่งการบันทึกเมื่อใด เพื่อจุดประสงค์ในการอธิบายคำถามนี้ให้เราสมมติว่าเราอยู่บนแพลตฟอร์ม. NET ที่มีการบันทึก log4net แต่คุณสามารถตอบได้อย่างอิสระ การแก้ไข: โครงการ Windows Forms โครงการ: UI, BusinessRules, DataHandlers ดังนั้นคุณจะไปเกี่ยวกับการเขียน DataHandlers ของคุณซึ่งการจัดการข้อมูลของคุณเช่นสร้างอ่านอัปเดตลบก่อน จากนั้นติดตามกฎธุรกิจของคุณ จากนั้น UI ของคุณหรือการเปลี่ยนแปลงอื่น ๆ ข้างต้น ทดสอบแอปพลิเคชันของคุณสำหรับการใช้งาน และจากนั้นก็เริ่มต้นการเขียนข้อยกเว้นของการจัดการรหัสและในที่สุดรหัสเข้าสู่ระบบของคุณหรือไม่ เวลาที่เหมาะสมในการเริ่มเขียนรหัสการจัดการข้อยกเว้นของคุณคือเมื่อใด PS: ในClean Codeของหนังสือพวกเขาบอกว่าเขียนบล็อกtry-catch-สุดท้ายของคุณก่อน นั่นทำให้ฉันถามคำถามนี้

6
กฎและคำแนะนำสำหรับการเข้าสู่ระบบ?
ในองค์กรของฉันเราได้รวบรวมกฎ / guildelines เกี่ยวกับการบันทึกที่ฉันต้องการทราบว่าคุณสามารถเพิ่มหรือแสดงความคิดเห็นได้หรือไม่ เราใช้ Java แต่คุณสามารถแสดงความคิดเห็นโดยทั่วไปเกี่ยวกับ loggin - กฎและคำแนะนำ ใช้ระดับการบันทึกที่ถูกต้อง ข้อผิดพลาด: มีบางอย่างผิดปกติและต้องแก้ไขโดยทันที คำเตือน: กระบวนการสามารถดำเนินการต่อโดยไม่ต้องแก้ไข แอปพลิเคชันควรยอมรับระดับนี้ แต่คำเตือนควรได้รับการตรวจสอบเสมอ ข้อมูล: ข้อมูลว่ากระบวนการสำคัญเสร็จสิ้นแล้ว DEBUG ใช้ระหว่างการพัฒนาเท่านั้น ตรวจสอบให้แน่ใจว่าคุณรู้ว่าคุณกำลังบันทึกอะไรอยู่ หลีกเลี่ยงการบันทึกมีผลต่อพฤติกรรมของแอปพลิเคชัน ฟังก์ชั่นของการบันทึกควรจะเขียนข้อความในบันทึก ข้อความบันทึกควรเป็นข้อความอธิบายสั้นกระชับและรัดกุม ไม่มีการใช้ข้อความไร้สาระมากเมื่อทำการแก้ไขปัญหา ใส่คุณสมบัติที่เหมาะสมใน log4j ใส่ในที่ถูกวิธีและชั้นเรียนจะถูกเขียนโดยอัตโนมัติ ตัวอย่าง: Datedfile -web log4j.rootLogger=ERROR, DATEDFILE log4j.logger.org.springframework=INFO log4j.logger.waffle=ERROR log4j.logger.se.prv=INFO log4j.logger.se.prv.common.mvc=INFO log4j.logger.se.prv.omklassning=DEBUG log4j.appender.DATEDFILE=biz.minaret.log4j.DatedFileAppender log4j.appender.DATEDFILE.layout=org.apache.log4j.PatternLayout log4j.appender.DATEDFILE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%C{1}.%M] - %m%n log4j.appender.DATEDFILE.Prefix=omklassning. log4j.appender.DATEDFILE.Suffix=.log log4j.appender.DATEDFILE.Directory=//localhost/WebSphereLog/omklassning/ ค่าบันทึก …
13 java  logging 

2
Logger.getLogger (MyClass.class) เป็นวิธีที่ดีที่สุดในการเริ่มต้นตัวบันทึก log4j หรือไม่
บทช่วยสอน Mkyong นี้แสดงให้เห็นถึงตัวบันทึกที่ไม่น่าสนใจด้วยวิธีนี้: @Controller public class WelcomeController { private static final Logger logger = Logger.getLogger(WelcomeController.class); // etc } ตอนนี้สมมุติว่าคลาสอื่น ๆ ที่คุณใช้มีตัวบันทึกจะเริ่มต้นตัวบันทึกได้ในลักษณะเดียวกัน คำถามของฉันคือ - นี่เป็นวิธีที่ดีที่สุดหรือไม่ ดูเหมือน ... ซ้ำแล้วซ้ำอีก
13 java  logging 

1
เข้าสู่ระบบไฟล์หรือตารางฐานข้อมูล?
ฉันกำลังพัฒนาเว็บแอปพลิเคชันที่ใช้ MS SQL สำหรับข้อมูลต่าง ๆ : รวมถึงผู้ใช้บัญชีผู้ใช้ใบอนุญาตผู้ใช้ราคาใบอนุญาตใบแจ้งหนี้ ฉันต้องการบันทึกการใช้งานแบบเรียลไทม์ของระบบของผู้ใช้และใช้สำหรับการเรียกเก็บเงินรายเดือน: เช่นบันทึกเมื่อใดก็ตามที่ผู้ใช้ได้รับหน้า / URL ที่เฉพาะเจาะจงและผู้ใช้ที่เรียกเก็บเงินเมื่อสิ้นเดือนตามจำนวนหน้าที่ดึงข้อมูล ฉันควรเขียนบันทึกเหตุการณ์เหล่านี้ลงในตารางในฐานข้อมูล MS SQL ของฉันหรือไม่ ฉันควรเขียนเหตุการณ์บันทึกเหล่านี้ลงในไฟล์บันทึกแบบต่อท้ายที่ไม่ใช่ SQL เท่านั้นหรือไม่ ฉันควรเขียนบันทึกเหตุการณ์เหล่านี้ลงในไฟล์บันทึกที่แตกต่างกันสำหรับผู้ใช้แต่ละคนหรือไม่ นี่ไม่ใช่เว็บไซต์ที่มีปริมาณมากโดยเฉพาะตัวอย่างเช่นมีผู้ใช้สูงสุด 10,000 คนต่อการทำกิจกรรมเฉลี่ย 5 เหตุการณ์ต่อวัน => 50,000 กิจกรรม / วัน = 30 กิจกรรม / นาที = 18,000,000 กิจกรรม / ปี ฉันถามเพราะดูเหมือนว่าตัวเลือกจะทำงานได้และฉันไม่เห็นว่ามีข้อได้เปรียบที่ชัดเจน ข้อมูลที่เกี่ยวข้องกับเหตุการณ์ที่เรียกเก็บเงินได้นั้นง่ายมากเช่น: ID ผู้ใช้ (ความสัมพันธ์กับ foreign key ไปยังตารางผู้ใช้ใน SQL) วันและเวลา …

2
ฉันจะจัดการกับความล้มเหลวของคนตัดไม้ได้อย่างไร
ในหลายแอปพลิเคชันของ บริษัท เราใช้ตัวบันทึกที่กำหนดเอง มันค่อนข้างแข็งแกร่งแม้ว่าเราอาจแทนที่ด้วยอะไรบางอย่างเช่น NLog ในอนาคต หนึ่งในหน้าที่ของคนตัดไม้คือการบันทึกข้อยกเว้นที่พบในแอปพลิเคชัน สิ่งหนึ่งที่ฉันกังวลอยู่เสมอคือการจัดการข้อยกเว้นภายในตัวบันทึกช่วยให้เกิดความล้มเหลวเงียบ นั่นคือถ้าบันทึกไม่ได้ถูกเขียนสำหรับข้อยกเว้นที่กำหนด (เนื่องจากข้อผิดพลาดในตัวบันทึก) ฉันจะจัดการกับมันอย่างไรและ (อย่างใด) บันทึกข้อยกเว้นในตัวบันทึกเอง ? สมมติว่าฟังก์ชัน WriteLog ส่งข้อยกเว้น ฉันควรลองเรียกใช้ฟังก์ชันบางครั้งหรือจนกว่าจะมีข้อผิดพลาดเกิดขึ้น? ฉันควรลองเขียนข้อยกเว้นที่โยนด้วยตัวบันทึก (ซึ่งน่าจะส่งผลให้เกิดข้อยกเว้นลงไปหมด ... ) ฉันโชคดีที่ไม่พบสถานการณ์นี้ยกเว้นตอนที่เราใช้งานตัวบันทึกที่กำหนดเองเป็นครั้งแรก ในทางกลับกันฉันไม่มีทางรู้ได้เลยว่าคนตัดไม้ล้มเหลวในการบันทึกข้อยกเว้นแอปพลิเคชัน (เนื่องจากข้อยกเว้นของตัวเอง) ฉันได้ลองค้นหาทางออนไลน์และในเว็บไซต์ SE บางแห่ง แต่มันก็ยังไม่เกิดผลดีนักเนื่องจากการโพสต์ทั้งหมดมีข้อผิดพลาดในตัวบันทึก (แต่ไม่ใช่ข้อยกเว้นที่เป็นไปได้และวิธีการบันทึก) หรือข้อยกเว้นภายนอกตัวบันทึก

8
เป็นไปได้หรือไม่ที่จะเก็บรหัสการบันทึกไว้อย่างสมบูรณ์นอกตรรกะทางธุรกิจ
ด้วยความช่วยเหลือของ AOP ฉันสามารถลบรหัสบันทึกจากตรรกะทางธุรกิจของฉัน แต่ฉันคิดว่ามันสามารถใช้เพื่อบันทึกสิ่งที่เรียบง่ายเท่านั้น (เช่นการเข้า / ออกวิธีการและค่าพารามิเตอร์) อย่างไรก็ตามถ้าฉันต้องลงชื่อเข้าใช้บางอย่างในตรรกะทางธุรกิจของฉัน เช่น public void SomeDomainMethod(string id) { //Get user by Id User user = Users.Get(id); if (user == null) { Log.Warn("user is not existed"); //<----------------- Log A throw new InvalidOperationException("user is not existed"); } //Step 1 while(true) { //do something } Log.Info("Step 1 …

6
จำเป็นต้องทำให้โค้ดของฉันอ่านได้ง่ายขึ้นสำหรับโปรแกรมเมอร์คนอื่น ๆ ในทีมของฉัน
ฉันกำลังทำงานโครงการในเดลฟายและฉันกำลังสร้างตัวติดตั้งสำหรับแอปพลิเคชันมีสามส่วนหลัก การติดตั้ง / ถอนการติดตั้งPostgreSQL myapplication (การตั้งค่า myapplication ถูกสร้างขึ้นโดยใช้ nsi) การติดตั้ง / ถอนการติดตั้ง การสร้างตารางใน Postgres ผ่านสคริปต์ (แบตช์ไฟล์) ทุกสิ่งทำงานได้อย่างราบรื่นและราบรื่น แต่หากสิ่งที่ล้มเหลวฉันได้สร้าง LogToFileger ซึ่งจะ LogToFile ทุกขั้นตอนของกระบวนการ เช่นนี้ LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started'); ฟังก์ชั่นLogToFileToFile.LogToFile()นี้จะเขียนเนื้อหาไปยังไฟล์ มันใช้งานได้ดี แต่ปัญหาก็คือมันทำให้โค้ดยุ่งเหยิงเพราะมันยากที่จะอ่านโค้ดเพราะคนคนหนึ่งเห็นการLogToFileToFile.LogToFile()เรียกใช้ฟังก์ชั่นได้ทุกที่ในโค้ด ตัวอย่าง if Not FileExists(SystemDrive+'\FileName.txt') then begin if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ done') else …

7
จากมุมมองการออกแบบแนวทางปฏิบัติที่ดีที่สุดสำหรับการบันทึกคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเพิ่มการบันทึกลงในแอปพลิเคชันที่ฉันกำลังทำงานอยู่ ฉันได้เพิ่มการบันทึกก่อนหน้านี้ไม่ใช่ปัญหาที่นี่ แต่จากมุมมองการออกแบบในภาษาเชิงวัตถุอะไรคือวิธีปฏิบัติที่ดีที่สุดสำหรับการบันทึกที่เป็นไปตาม OOP และรูปแบบ หมายเหตุ:ฉันกำลังทำสิ่งนี้ใน C # ดังนั้นตัวอย่างใน C # ยินดีต้อนรับอย่างชัดเจน ฉันต้องการเห็นตัวอย่างใน Java และ Ruby แก้ไข:ฉันใช้ log4net ฉันไม่รู้ว่าวิธีที่ดีที่สุดในการเสียบคืออะไร

4
การล็อกอินแบบอะซิงโครนัส - ควรทำอย่างไร?
ในบริการหลายอย่างที่ฉันทำงานมีการบันทึกจำนวนมาก บริการเป็นบริการ WCF (ส่วนใหญ่) ซึ่งใช้คลาส. NET EventLogger ฉันอยู่ระหว่างการปรับปรุงประสิทธิภาพของบริการเหล่านี้และฉันต้องคิดว่าการบันทึกแบบอะซิงโครนัสจะเป็นประโยชน์ต่อประสิทธิภาพการทำงาน ฉันไม่ทราบว่าจะเกิดอะไรขึ้นเมื่อหลายเธรดขอให้บันทึกและถ้ามันสร้างคอขวด แต่ถึงแม้ว่ามันจะไม่ฉันก็ยังคิดว่ามันจะไม่รบกวนกระบวนการที่เกิดขึ้นจริง ความคิดของฉันคือฉันควรจะเรียกใช้วิธีการบันทึกเดียวกันกับที่ฉันเรียกตอนนี้ แต่ใช้เธรดใหม่ในขณะที่ดำเนินการตามกระบวนการจริงต่อไป บางคำถามเกี่ยวกับที่: มันโอเคไหม มีข้อเสียอะไรบ้าง? ควรทำในวิธีที่ต่างออกไปหรือไม่? อาจจะเร็วจนไม่คุ้มค่ากับความพยายามหรือ
11 logging 

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