Commit 52c033db authored by Liang Ding's avatar Liang Ding

格式化 & 文件日志配置

parent 99273811
...@@ -39,149 +39,127 @@ import org.json.JSONObject; ...@@ -39,149 +39,127 @@ import org.json.JSONObject;
/** /**
* This listener is responsible for processing article comment reply. * This listener is responsible for processing article comment reply.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.1.7, Nov 20, 2015 * @author <a href="http://www.wanglay.com">Lei Wang</a>
* @version 1.2.1.7, May 6, 2016
* @since 0.3.1 * @since 0.3.1
*/ */
public final class ArticleCommentReplyNotifier extends public final class ArticleCommentReplyNotifier extends AbstractEventListener<JSONObject> {
AbstractEventListener<JSONObject> {
/**
/** * Logger.
* Logger. */
*/ private static final Logger LOGGER = Logger.getLogger(ArticleCommentReplyNotifier.class.getName());
private static final Logger LOGGER = Logger
.getLogger(ArticleCommentReplyNotifier.class.getName()); /**
* Mail service.
/** */
* Mail service. private MailService mailService = MailServiceFactory.getMailService();
*/
private MailService mailService = MailServiceFactory.getMailService(); @Override
public void action(final Event<JSONObject> event) throws EventException {
@Override final JSONObject eventData = event.getData();
public void action(final Event<JSONObject> event) throws EventException { final JSONObject comment = eventData.optJSONObject(Comment.COMMENT);
final JSONObject eventData = event.getData(); final JSONObject article = eventData.optJSONObject(Article.ARTICLE);
final JSONObject comment = eventData.optJSONObject(Comment.COMMENT);
final JSONObject article = eventData.optJSONObject(Article.ARTICLE); LOGGER.log(Level.DEBUG,
"Processing an event[type={0}, data={1}] in listener[className={2}]",
LOGGER.log( new Object[]{event.getType(), eventData, ArticleCommentReplyNotifier.class.getName()});
Level.DEBUG, final String originalCommentId = comment.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID);
"Processing an event[type={0}, data={1}] in listener[className={2}]",
new Object[] { event.getType(), eventData, if (Strings.isEmptyOrNull(originalCommentId)) {
ArticleCommentReplyNotifier.class.getName() }); LOGGER.log(Level.DEBUG, "This comment[id={0}] is not a reply", comment.optString(Keys.OBJECT_ID));
final String originalCommentId = comment
.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID); return;
}
if (Strings.isEmptyOrNull(originalCommentId)) {
LOGGER.log(Level.DEBUG, "This comment[id={0}] is not a reply", if (Latkes.getServePath().contains("localhost")) {
comment.optString(Keys.OBJECT_ID)); LOGGER.log(Level.INFO, "Solo runs on local server, so should not send mail");
return; return;
} }
if (Latkes.getServePath().contains("localhost")) { final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
LOGGER.log(Level.INFO, final PreferenceQueryService preferenceQueryService = beanManager.getReference(PreferenceQueryService.class);
"Solo runs on local server, so should not send mail");
final CommentRepository commentRepository = beanManager.getReference(CommentRepositoryImpl.class);
return;
} try {
final String commentEmail = comment.getString(Comment.COMMENT_EMAIL);
final LatkeBeanManager beanManager = Lifecycle.getBeanManager(); final JSONObject originalComment = commentRepository.get(originalCommentId);
final PreferenceQueryService preferenceQueryService = beanManager final String originalCommentEmail = originalComment.getString(Comment.COMMENT_EMAIL);
.getReference(PreferenceQueryService.class);
if (originalCommentEmail.equalsIgnoreCase(commentEmail)) {
final CommentRepository commentRepository = beanManager return;
.getReference(CommentRepositoryImpl.class); }
try { final JSONObject preference = preferenceQueryService.getPreference();
final String commentEmail = comment
.getString(Comment.COMMENT_EMAIL); if (null == preference) {
final JSONObject originalComment = commentRepository throw new EventException("Not found preference");
.get(originalCommentId); }
final String originalCommentEmail = originalComment
.getString(Comment.COMMENT_EMAIL); final String blogTitle = preference.getString(Option.ID_C_BLOG_TITLE);
final String adminEmail = preference.getString(Option.ID_C_ADMIN_EMAIL);
if (originalCommentEmail.equalsIgnoreCase(commentEmail)) {
return; final String commentContent = comment.getString(Comment.COMMENT_CONTENT);
} final String commentSharpURL = comment.getString(Comment.COMMENT_SHARP_URL);
final Message message = new Message();
final JSONObject preference = preferenceQueryService
.getPreference(); message.setFrom(adminEmail);
message.addRecipient(originalCommentEmail);
if (null == preference) { final JSONObject replyNotificationTemplate = preferenceQueryService.getReplyNotificationTemplate();
throw new EventException("Not found preference");
} final String articleTitle = article.getString(Article.ARTICLE_TITLE);
final String articleLink = Latkes.getServePath() + article.getString(Article.ARTICLE_PERMALINK);
final String blogTitle = preference final String commentName = comment.getString(Comment.COMMENT_NAME);
.getString(Option.ID_C_BLOG_TITLE); final String commentURL = comment.getString(Comment.COMMENT_URL);
final String adminEmail = preference String commenter;
.getString(Option.ID_C_ADMIN_EMAIL);
if (!"http://".equals(commentURL)) {
final String commentContent = comment commenter = "<a target=\"_blank\" " + "href=\"" + commentURL + "\">" + commentName + "</a>";
.getString(Comment.COMMENT_CONTENT); } else {
final String commentSharpURL = comment commenter = commentName;
.getString(Comment.COMMENT_SHARP_URL); }
final Message message = new Message(); final String mailSubject = replyNotificationTemplate.getString(
"subject").replace("${postLink}", articleLink)
message.setFrom(adminEmail); .replace("${postTitle}", articleTitle)
message.addRecipient(originalCommentEmail); .replace("${replier}", commenter)
final JSONObject replyNotificationTemplate = preferenceQueryService .replace("${blogTitle}", blogTitle)
.getReplyNotificationTemplate(); .replace("${replyURL}",
Latkes.getServePath() + commentSharpURL)
final String articleTitle = article .replace("${replyContent}", commentContent);
.getString(Article.ARTICLE_TITLE);
final String articleLink = Latkes.getServePath() message.setSubject(mailSubject);
+ article.getString(Article.ARTICLE_PERMALINK); final String mailBody = replyNotificationTemplate
final String commentName = comment.getString(Comment.COMMENT_NAME); .getString("body")
final String commentURL = comment.getString(Comment.COMMENT_URL); .replace("${postLink}", articleLink)
String commenter; .replace("${postTitle}", articleTitle)
.replace("${replier}", commenter)
if (!"http://".equals(commentURL)) { .replace("${blogTitle}", blogTitle)
commenter = "<a target=\"_blank\" " + "href=\"" + commentURL .replace("${replyURL}",
+ "\">" + commentName + "</a>"; Latkes.getServePath() + commentSharpURL)
} else { .replace("${replyContent}", commentContent);
commenter = commentName;
} message.setHtmlBody(mailBody);
final String mailSubject = replyNotificationTemplate.getString( LOGGER.log(Level.DEBUG, "Sending a mail[mailSubject={0}, mailBody=[{1}] to [{2}]",
"subject").replace("${postLink}", articleLink) new Object[]{mailSubject, mailBody, originalCommentEmail});
.replace("${postTitle}", articleTitle) mailService.send(message);
.replace("${replier}", commenter)
.replace("${blogTitle}", blogTitle) } catch (final Exception e) {
.replace("${replyURL}", LOGGER.log(Level.ERROR, e.getMessage(), e);
Latkes.getServePath() + commentSharpURL) throw new EventException("Reply notifier error!");
.replace("${replyContent}", commentContent); }
}
message.setSubject(mailSubject);
final String mailBody = replyNotificationTemplate /**
.getString("body") * Gets the event type {@linkplain EventTypes#ADD_COMMENT_TO_ARTICLE}.
.replace("${postLink}", articleLink) *
.replace("${postTitle}", articleTitle) * @return event type
.replace("${replier}", commenter) */
.replace("${blogTitle}", blogTitle) @Override
.replace("${replyURL}", public String getEventType() {
Latkes.getServePath() + commentSharpURL) return EventTypes.ADD_COMMENT_TO_ARTICLE;
.replace("${replyContent}", commentContent); }
message.setHtmlBody(mailBody);
LOGGER.log(
Level.DEBUG,
"Sending a mail[mailSubject={0}, mailBody=[{1}] to [{2}]",
new Object[] { mailSubject, mailBody, originalCommentEmail });
mailService.send(message);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, e.getMessage(), e);
throw new EventException("Reply notifier error!");
}
}
/**
* Gets the event type {@linkplain EventTypes#ADD_COMMENT_TO_ARTICLE}.
*
* @return event type
*/
@Override
public String getEventType() {
return EventTypes.ADD_COMMENT_TO_ARTICLE;
}
} }
...@@ -16,33 +16,33 @@ ...@@ -16,33 +16,33 @@
# #
# Description: Solo logging configurations. # Description: Solo logging configurations.
# Version: 1.1.0.4, Nov 5, 2015 # Version: 1.1.0.4, May 6, 2016
# Author: Liang Ding # Author: <a href="http://88250.b3log.org">Liang Ding</a>
# Author: <a href="http://www.wanglay.com">Lei Wang</a>
# #
log4j.rootLogger=INFO,stdout,MYFILE log4j.rootLogger=INFO,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=[%-5p]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c:%L]: %m%n
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
# Print only messages of level ERROR or above in the package noModule. # Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL log4j.logger.noModule=FATAL
log4j.logger.org.b3log.solo=INFO,MYFILE log4j.logger.org.b3log.solo=INFO
log4j.logger.org.b3log.latke=INFO,MYFILE log4j.logger.org.b3log.latke=ERROR
log4j.logger.org.b3log.latke.util.freemarker.Templates=ERROR,MYFILE log4j.logger.org.b3log.latke.util.freemarker.Templates=ERROR
log4j.logger.org.eclipse.jetty=WARN,MYFILE log4j.logger.org.eclipse.jetty=WARN
log4j.logger.freemarker=WARN,MYFILE log4j.logger.freemarker=WARN
log4j.logger.com.mchange=WARN,MYFILE log4j.logger.com.mchange=WARN
# File Logger Conf
log4j.appender.MYFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.MYFILE.File=/data/logs/myblog.log log4j.appender.file.File=./solo.log
log4j.appender.MYFILE.File=/logs/myblog.log log4j.appender.file.MaxFileSize=10MB
log4j.appender.MYFILE.DatePattern=.yyyy-MM-dd log4j.appender.file.MaxBackupIndex=5
log4j.appender.MYFILE.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.MYFILE.layout.ConversionPattern=[%d{HH\:mm\:ss}] %p %c - %m%n log4j.appender.file.layout.ConversionPattern=[%-5p]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c:%L]: %m%n
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment