"לעבוד" על jacoco בעזרת lambda?

התשובה הכי גרועה שאני יכול לענות היא

שגם אני יכול לממש configureandWatch ואז אני אצא ממש טמבל. מסכים עם הטענה.
 
נראה שאתה צודק. באג די רציני בספרייה הסרוחה הזו.

עכ"פ עדיין הקוד שלך, אם הבנתי אותו, לא מוסיף שום פונקציונליות שאין בקובץ settings ?
 

TakeCtrl

New member
תכלס לפי מה שאני רואה הוא אפילו לא משתמש בapi של log4j

לקינפוג זמן ריצה, הוא סה"כ משחק בxml שהוא מקבל מבחוץ בdom api כדי למזג אותו לקובץ קיים, קוד בסגנון:
קוד:
	for (DOMNode in : requestNode.getChildrenByName(LOG_CATEGORY)) {		
				DOMNode cur = curLogger.appendChild("logger");
				cur.addAttribute("additivity", "false");
				cur.addAttribute("name", in.getAttribute("name"));
				cur.appendChild("level").addAttribute(
			"value",in.getChildByName(LOG_LEVEL).getAttribute("value"));

		for (DOMNode node : in.getChildrenByName(LOG_APPENDER_NAME)) {
							cur.appendChild("appender-ref").addAttribute("ref", node.getValue());
					}

		}
אה, כן ו DOMNode זה מעטפת ל org.w3c.Element :)
 

user32

Well-known member
מנהל
נראה לי די פשוט

בהנחה שלכל פרוייקט בעולם יש תחילית ייחודית של החבילות שלו אתה מגדיר בקובץ properties לוגר שרושם רק את החבילות com.me.likes.to.argue
זהו.

אני מפספס פה משהו?

לגבי האיתחול: כמו שאמרו, אפשר לעשות ריסטארט (שבעיניי זה הרבה פחות נורא מאשר לעשות שינוי קוד + לקמפל + להתקין מחדש את האפליקציה) או פתרון הwatcher שאני זוכר אותו במעורפל מלפני כמה שנים.
 
ייתכן ואתה צודק

אני אבדוק.
אם כבר מדברים על לוגים. אני מחפש תוכנה שתקבל PATH לקובץ (או תיקייה) ותקרא את הקובץ ואם יש שם ERROR שתשלח מייל. גוגל מביא לי תוכנות ויזואליות לקריאת קבצי לוג. אני רוצה משהו שפרואקטיבי ישלח לי מייל ולא שאני אצטרך להסתכל.
 

user32

Well-known member
מנהל
נשמע קלאסי לסקריפט

פרל אולי הכי מתאים אבל גם פיתון ואפילו bash יספיק.
ואם בניתוח לוגים עסקינן אני מכיר את אחד המייסדים של הסטארטאפ הזה שאמור לספק כלים לניתוח כמויות גדולות של לוגים (ביג דאטה מה שנקרא): http://logz.io/
 

user32

Well-known member
מנהל
איי איי, בוא נפטר את כל המתכנתים

ונעבור להשתמש בדברים מוכנים
 
גיליתי ש-LOG4J תומך בזה.

פשוט הסתכלתי על כל המחלקות שממשות אפנדר וראיתי שיש משהו מתאים. הסתבכתי עם החשבון מייל שלי בעבודה וזה עבד טוב עם גימייל אז פתחתי חשבון מיוחד לזה בגימייל.
&nbsp
&nbsp
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.Threshold=ERROR
log4j.appender.email.SMTPProtocol=smtps
log4j.appender.email.SMTPHost=smtp.gmail.com
log4j.appender.email.SMTPPort=465
log4j.appender.email.SMTPUsername=<from>@gmail.com
log4j.appender.email.SMTPPassword=<password>
log4j.appender.email.smtp.starttls.enable=true
log4j.appender.email.smtp.auth=true
log4j.appender.email.From=<from>@gmail.com
log4j.appender.email.To=<to>@gmail.com
log4j.appender.email.Subject=Error in <project name>
log4j.appender.email.BufferSize=1
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
נכון.

אני יכול להגדיר BufferSize גדול יותר. מה שהייתי רוצה זה אולי באפר של זמן. כלומר אם עבר יותר מ-X דקות ויש שגיאה תשלח מייל. אני מעדיף את זה מאשר לממש את זה לבד.
 
הנה

קוד:
"""python2 only"""

import sys
import os
import mmap
import smtplib
from collections import namedtuple


Mail = namedtuple('Mail', ['sender', 'user', 'password', 'server'])
mailConfig = Mail(
    '[EMAIL][email protected][/EMAIL]',
    'your.user',
    'your.password',
    'smtp.ask.your.it.dude' #  catch him when he's not eating his Burrito
)


def send_mail(dest, filename, conf=mailConfig):
    """this is not really working"""
    server = smtplib.SMTP(conf.server)
    server.starttls()
    server.login(conf.user, conf.password)
    with open(filename) as f:
        server.sendmail(conf.sender, dest, f.read())
    server.quit()


def word_found(filename, word):
    """True iff word is in given file"""
    with open(filename) as f:
        return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ).find(word) >= 0


def list_files_with_word(root, word):
    """return filenames containing given word"""
    for top, _, files in os.walk(root):
        for filename in files:
            fpath = os.path.join(top, filename)
            if word_found(fpath, word):
                yield fpath


if __name__ == '__main__':
    for error_file in list_files_with_word(sys.argv[1], 'ERROR'):
        send_mail(['[EMAIL][email protected][/EMAIL]'], error_file)

טוב זה לא באמת יעבוד, אבל לא צריך יותר מ-10 LOC להגיע לשם.
 

bismark1

New member
מתעלק על השרשור - לוג נורמלי ל-++C על חלונות?

למישהו יש נסיון חיובי עם משהו שיחסית פשוט לקינפוג (לא צריך מליון אופציות) והתקנה (לא גורר אחריו מליון תלויות)?
 

zaske

New member
לינוקס טו דה רסקיו

awk/sed וקצת סקריפטולוגיה הם חבריך הטובים ביותר פה.
 
למעלה