浮沙程律的老婆是谁?

  相传在神州大地上有着神话时代便流传下来的十样上古神器[钟、剑

  、斧、壶、塔、琴、鼎、印、镜、石],他们各自拥有不同的绝世力量,

  但关于它们的下落都已湮灭于神州漫长之历史中,俨然成迷。公元七世

  纪,北朝隋帝国消灭了南朝陈国,结束了中原南北朝长期分裂的局面。

  陈国遗民悲痛祖国灭亡,在江南集结大军,意图一举复国。隋朝出兵平

  乱,为首一位年仅十二岁之少年,以十神器之一的轩辕剑,在一击之间

  便将陈国的反抗大军消灭殆尽。

  十六年后,随着一颗划过天际、象征乱世之兆的神秘妖星“赤贯”

  的出现。尚未弱冠的陈靖仇踏上了他寻找上古神器、对抗隋朝的孤独旅

  程。我们的故事就从这里开始了,时间是《轩辕剑3》的一百三十三年前。。。

  一日,陈国后裔陈靖仇及其师父一同来到伏魔山上为寻找上古神器

  之一的昆仑镜,在山洞找到古镜之后,靖仇向师父问起父亲之事,于是

  师父向靖仇缓缓道来。原来十六年前,靖仇的师父和父亲在江南召集陈

  国的旧臣,意图复兴陈国。当时的隋文帝便派遣了曾经灭陈国的杨素前

  来迎战,而令人惊讶的是杨素却只带了区区的二十骑前来,那一仗由于

  一个拥有“阴阳妖瞳”的杨拓,而使得陈国大军一败涂地。也正是靖仇

  的师父为何要苦练鬼谷道术的原因了。师父还告诉靖仇,现在杨素已死

  ,可杨拓还活着,并让靖仇好好的修习鬼谷之术,将来复兴陈国的重担

  就靠靖仇了。说完便让靖仇去拿昆仑古镜,靖仇刚想拿,忽然出现一头

  魔兽,可怜师父为救靖仇吐出冰丝将自己和魔兽封在洞中。一个时辰后

  ,靖仇醒来后,师父便交待让他去雷夏泽找自己的师兄公山先生前来救

  自己。回到伏魔山脚下,靖仇决心一定要找到公山先生前来救师父,并

  唤出师父给的符鬼。前途茫茫,靖仇一人就这样上路了。

  往东北走来到月河村。从张老伯口中得知雷夏泽应该往北走,谁知

  守桥的人告诉靖仇这几天在举行“河神祭”而不让通过,无奈之下,靖

  仇只能先找家客栈落脚再说。(东面的那幢房子就是客栈)在客栈的门

  口还有个乞丐。好心的靖仇帮他从井里打了15碗水,乞丐也给了靖仇一

  点金疮药。在客栈问过贺老板后,靖仇觉得只能在这里住两天了,在上

  楼时还遇见了天生白发的贺小雪。睡过一晚后,早上起来就听见房客说

  村里的人在讨论抽签的事,于是靖仇出客栈到了村里。来到大夫的家中

  一打听,原来月河村每年会选一个女子来献给河神,而这次真好抽中了

  大夫的女儿,于是靖仇暗暗打算搭救这个女子。回到客栈中,从贺老板

  口中得知那个白发的贺小雪自愿以自己一命来救大夫的女儿,靖仇听到

  后非常气愤,打算到祭神那天去阻止。又睡了一晚后,一大早靖仇就出

  门了,在村南面找到了贺小雪的弟弟小朔,小朔告诉他小雪被关在月河

  河洞中,于是靖仇向河洞出发了。往南穿过树林通过洞中的迷宫后,在

  洞的尽头看见村人将小雪推下了河神洞中,靖仇阻止不及,也一同跳了

  下去。这时一条闪光打来,靖仇仔细一看,原来河神是条蛟精。费尽九

  牛二虎之力将它打跑之后,和小雪的对话中得知她也有可怜的身世。接

  着就是找出洞的路了,一直往左走就出洞了。回到月河村时却看到村民

  都已经死了,原来那个蛟精并没有死,逃出来后在村里进行报复,小朔

  和贺老伯都已被他害死了。靖仇怒不可竭,冲上去经过一番搏斗,终于

  将蛟精消灭了。但是愤怒的村民却竭力将靖仇贺小雪赶出了村外,看到

  小雪孤苦无依,靖仇就决定带小雪一起去找师伯,将来让她也有一个安

  身之处。于是两人向西北方的雷夏泽走去。

  来到雷夏泽后,发现师伯已经伤病在床多时,一时也无能力解救师

  父。为让师伯的病好起来,靖仇听从了师伯夫人的意见,打算找到神农

  鼎。但师伯夫人说神鼎可能在法术高强的宇文太师手中,只能先到北方

  的鲜卑拓拨部落看看。

  往北方先到黑山镇,却听得路人说北面有人的抓人办什么会。靖仇

  他们也走累了,于走到酒楼里想吃点什么,刚坐下,就听得门外有人在

  大声的嚷嚷。走出去一看,原来是一伙军人为宫中的郡主强抢男童,说

  什么要将男童血喝后从此养颜不老。路见不平,靖仇刚想出手,却见一

  个胡人女孩先一步感到。打跑一些小兵后,那个军官忽然变成了邪尸骷

  髅,打晕了胡人女孩。这时靖仇出手相救,一番打斗之后,终于将骷髅

  打死。靖仇接着去扶那个女孩,但那女孩却不领情,幸好她的姐夫即时

  赶来。一阵感谢后,女孩的姐夫在酒店设下酒席款待靖仇。原来此人名

  叫张烈,是拓拨族人拓拨月儿的丈夫,他还告诉靖仇神农鼎可能已经被

  朝廷得到。正在吃饭之际,忽然张烈的族人匆匆走来,告诉张烈又发现

  有隋朝的妖魔军队跟踪他们,靖仇自告奋勇要求帮助张烈他们,于是三

  人向东面的树林走去。走到树林的深处,便看见一群小孩被绑在那里。

  经过两次激烈的战斗后,靖仇他们终于救出了孩子。

  之后,靖仇跟随张烈来到他们族人的集聚地大雁岭,顺便也探听一

  下神农鼎下落的蛛丝马迹。但却没有什么收获,此时张烈也派出探子帮

  助打听神农鼎的下落。六天之后,张烈已经打听到神鼎的下落,原来确

  实在宇文太师手中,并且他把神鼎藏在北方涿郡的一个碉堡里。由于他

  偷藏神鼎被皇帝知道了,于是只能将神鼎运往东都,而此行的路线已经

  被张烈的探子所探到。正说道这里,拓拨月儿突然跑了进来,说玉儿不

  辞而别去找神鼎了,张烈又气又急,与靖仇一起往运鼎路线赶去。

  在卢家渡,靖仇发现所有的船都被韩公公包走运美女了,再和张烈

  、小雪商量过后,大家都认为玉儿会在船上,于是几人想办法混上船。

  此时韩公公正好带着征来的美女上船,靖仇灵机一动,打算让自己扮女

  人让张烈扮军官,正大光明的混上船去。先向小雪问问应该怎么扮女人

  ,小雪告诉他首先要找到胭脂、衣裳和簪子。在左边岸上找到胭脂,在

  右边的房间里,只要给那个小女孩一双靴子就能得到簪子(皮靴可向左

  面的卖杂货的人买),在上面左边的房间里,给那个婆婆手镯和铁戒指

  就能得到衣裳了。好了,东西齐了,靖仇来到客栈和张烈会合。瞒过守

  船的士兵,到达第二仓内,却没有玉儿的踪影。三人打算再到船底层看

  看。到达底层后,不料被韩公公发现了,既然发现了,靖仇他们就打算

  劫船,直接开走。一路往甲板走去,打败守卫后,善良的靖仇又回去把

  那些女子放了。谁知回到甲板上后,韩公公已带着官兵来了,一场战斗

  后,从韩公公口中得知神鼎已运往龙舟了。

  几天航行后,靖仇他们来到了大梁。从城南的徐老头那里得知神鼎

  已经被皇上运到龙舟上去了。经过商议后,他们打算先想办法溜到龙舟

  上再说。于是一行人先来到了码头。可是码头上有官兵守卫,怎么过去

  呢?靖仇仔细想过后,打算利用官兵转身的瞬间溜过去。骗过守卫后,

  三人来到龙舟队伍中,可是有好多龙舟啊,靖仇只能慢慢的找。在龙舟

  上可也是不能被官兵看到的喔。好不容易骗过了守卫,在一间屋子里找

  到了神农鼎,谁知仔细一看原来是假的。这时正好走来一个太监,经过

  一番拷问,原来真的神鼎已经被一个手拿宣花大斧,身骑黄骠马的响马

  抢走了。而太监生怕皇帝责怪,假造了一个鼎。善良的靖仇将太监放了

  后,他却在门外大喊大叫引来了官兵。靖仇只能另找出路,从房间地下

  通过后,一路往上走。走到与前一条船相同的地方,地下会有一个迷宫

  ,出口大致在西北方。再从梁柱爬上去,经过七绕八绕的最后到了一块

  田字形的梁柱边,在右边最中间那根,靖仇发现了一个奇怪的地方,原

  来这里可以看见龙舟大厅。过了一会儿,又看见月儿装扮的宫女前来刺

  杀无道昏君杨广。正要成功时,宇文太师赶来阻止了拓拨玉儿,幸好靖

  仇及时用鬼谷之术施放烟雾而得以逃脱,在众多的追兵下,靖仇几人只

  能跳水而逃。在另一边,杨广让宇文太师去捉拿靖仇他们,并要他保护

  好要求同去的宁珂郡主。

  在河边的破草屋中,昏迷的靖仇和玉儿相继醒来。靖仇打算继续寻

  找神鼎,而张烈要回拓拨部落主持大局。而玉儿硬要留下来和靖仇一起

  去寻找神鼎的下落(好象对靖仇有意思哦!)。

  三人向北来到豆子坑,村里左边的村民告诉靖仇确实是魔王岩的混

  世魔王把神鼎抢到山上去了。在上山前,靖仇他们来到酒店打算先填饱

  肚子再说。正吃着的时候,外面传来一阵呵斥声。出门一看,原来是一

  群士兵把运货商人当作土匪,正要抓他们。路见不平,玉儿怎么会答应

  。一出手便将那个军官打败,而随靖仇一起出来的两个巨汉也将另外的

  士兵摆平了。彼此寒暄一阵后,原来这两人竟是程咬金和秦叔宝(隋唐

  演义啊?!我倒!),说完两人就走了。三人怕隋朝大军马上会来,所

  以向魔王岩赶去。来到魔王岩后,这里有喽罗守着,为了不打草惊蛇,

  靖仇来到水塘边打算潜水进去,可是玉儿不会游泳,还是小雪聪明,想

  出了用竹管子的方法,三人正要回村子找竹管子,忽然看见村里的农夫

  在往寨中送粮,于是决定下山去扮作送粮的混进寨中。回到村中后,正

  好遇见一群小孩,而且他们手上正好有竹管,但小孩提出玩捉猫猫的游

  戏,只要靖仇赢了,就把竹管给他。(这还不容易?大多数的小孩都躲

  在山岩底下)在找他们的时候还找到了宝物灵界指标和蟾涿香袋。再和

  最左边的村人说话,原来香袋是他掉的,他还答应送靖仇偷偷进魔王岩。

  这下进魔王岩有两种办法了。虽然方法不同,但进去之后靖仇都会

  遇见一个很大的迷宫,里面可以得到青钢剑和暗杀宝录。在迷宫的尽头

  ,靖仇他们遇见了程咬金。原来程咬金就是魔王岩的大王,于是玉儿向

  程咬金索要神鼎,傻头傻脑的程咬金却不给,快要打起来的时候,喽罗

  忽然来报官兵来抢神鼎了,傻老程还以为这是靖仇他们的声东击西之计

  呢。来抢神鼎的就是宇文太师,无奈他法力高强,靖仇只能眼睁睁的看

  着神鼎被拿走。误会的程咬金竟然还与靖仇他们打了一架,幸好秦叔宝

  看破这是宇文太师的诡计。靖仇答应程咬金在十五天之内一定找到神鼎

  回来还一个清白。往下就出了寨子,回到村中。出村向东走到了东莱,

  已经过了六天了,可是一点消息也没有。再出东莱走到树林那里(泰山

  上面一点)遇见了受伤的齐二郎,送他回东莱后,从他的娘子打听到有

  一群士兵驻扎在了泰山,还在泰山上设立了奇怪的祭坛。于是靖仇他们

  马上赶往泰山。打败山脚下的士兵,三人冲到山顶,但山顶上空无一人

  。正好这时听到有说话声,三人就偷偷躲了起来。原来是宇文太师手下

  的杨硕和韩腾,他们竟然杀死了东莱城六万条人命去炼血丹。打败他后

  ,他说出了事情的经过后便咬舌自尽了。靖仇在他的身上找到了一张地

  图和一封信。从信里得知,宇文太师好象确实没有得到神鼎,无奈之下

  ,靖仇他们只能按照信上所说的再到大梁走一趟。

  首先来到渡口,却发现一条船停在那里,十分可疑。靖仇看看时间

  无多了,也不管了,径直向船上杀去。往里走遇见一个隋军队长,原来

  他是一条鲤鱼精,打败他后(它会有三个化身,只有真身会受伤,打的

  时候要注意一点),忽然宁珂郡主走了出来,告诉靖仇她实在不满皇帝

  生灵涂炭,还说神鼎就在船上最底层,让靖仇他们跟她下去拿。走到楼

  梯口,玉儿觉得这是一个陷阱,最后决定让靖仇一个人先下去看看再说

  。靖仇下去后,宁珂见他一人前来,硬是又上去将小雪和玉儿拉了下来

  。在第二个房间里果然找到了神鼎,靖仇在用炼妖壶收鼎的时候,正好

  给宁珂看见。回到码头上以后,宁珂另外找了只船走了,临走的时候还

  送给小雪一根铃铛发簪。在还神鼎以前,靖仇想先把为师伯治病的药炼

  好,可是一看药方靖仇的头又大了,上面写着各种怪药,也不知道是什

  么。和玉儿商量以后,打算先到大梁的药铺先看看。

  大梁的药店果然有这些药,只是独缺一种鵁肉的药,需要到西北的

  山洞打这种鸟。在西北的山洞打好鸟后回到船上,炼好治师伯的药后,

  靖仇就赶去魔王岩。见到程咬金才知道他已经归顺张须陀帐下,为拿神

  鼎三人与程咬金、秦叔宝再次战斗(当然是友谊赛啦,不过照样会死喔

  )。打败他们后(真难打)三人带着神鼎准备下山。靖仇打算先回雷夏

  泽为师伯治病,可玉儿硬要报答上次的救命之恩,要跟靖仇一起去,靖

  仇答应后,三人向雷夏泽赶去。

  回到雷夏泽后,却只看见垂钓老人,打听之下知道师伯已经病故,

  想了一下后,靖仇决定回到大梁去找师伯母。乘船来到大梁后,在街上

  遇见师伯母的孙女,在她的带领下来到师伯母家中。从师伯的遗书上得

  知要对付魔兽还有一人,就是传说中的东海仙人。但是现有的船并不能

  出海,经师伯母介绍知道大梁城中有一赵姓工匠会造海船。去到隔壁的

  房间让赵工匠造船。三日后,大船造好,三人向东海进发了。谁知在海

  上遇见了一条大鱼,将船装翻,三人也被水吹到了一个岛上。在岛上兜

  了几圈后,遇到了氐人族的两个人,经过一番遭遇战后,出来一位氐人

  族女王。原来这里竟是那条大鱼的肚子里,那条大鱼也是上古神兽,名

  为巨海。说完后女王邀请三人去皇宫说话。(里面的一间房间里有遁形

  浮沙,别忘了拿)与女王交谈后,靖仇答应帮她一起对付黑龙王。坐着

  鲸鱼向黑龙王处游去。(那个水底迷宫蛮厉害的,记得出口在西北方向

  )走到龙宫的尽头就看见黑龙王了。靖仇三人全力向黑龙王杀去。打败

  他后,他却用计让玉儿拿下了崆峒印,使得氐人族的人都一下子变老了

  。虽然错误已经不能弥补,但玉儿还是和靖仇一起回到氐人族的王宫向

  女王道歉。玉儿为了表达对大家的歉意,毁了自己的容貌。几天后,女

  王为此也非常后悔,表示要送靖仇他们去仙人岛以缓和一下自己内疚的

  到了仙人岛后,经过几天的赶路,玉儿和靖仇的感情越来越好了。

  一天,玉儿又发高烧了,还好靖仇知道治病的药方。于是和小雪一起来

  到百草涧(进山洞往下就是百草涧,药都隐藏在地上慢慢找)。找回来

  后熬好药,但玉儿吃了并没好。于是靖仇拿出神农鼎,又去采了一次药

  ,回来弄好还是不见玉儿好转,这时小雪将自己的肉割了下来一起熬(

  好感人哦),过了两个时辰,玉儿终于醒了过来。第二天,三人继续赶

  路,走过百草涧就看见两个仙人在下棋,但和他们说话却不理。靖仇一

  连等了三天,那老翁总算下完了。听过靖仇的请求后,他让靖仇他们先

  到天外村然翁居休息休息。到了然翁居,两个仙人已经在那里了,但不

  管靖仇怎么恳求,那个古月仙人就是不肯救靖仇的师父。他还告诉靖仇

  玉儿会有生命的危险,让他明天去东皇岭去采百年地捻草。睡到半夜,

  玉儿忽然不行了,靖仇割下自己的肉熬药也不管用,只得去找老仙人求

  救。另一边,小雪去求古月仙人救救玉儿,正在说话时,老仙人带着奄

  奄一息的靖仇来。原来靖仇为采百年地捻草而失足落下了山崖。古月仙

  人终于被感动了,答应救靖仇和玉儿。第二天清晨,已经大好的靖仇来

  到院子里,古月仙人告诉他要救玉儿还要去西母峰找到血露蟠桃才行,

  并给了两人消除西母峰迷雾的火云珠。于是靖仇火小雪向西母峰走去。

  从西母峰一直往上走就可以看见血露蟠桃树了,小雪正要摘桃,突然出

  现了桃树的守护刑天,一场打斗在所难免。可是他太厉害了,靖仇和小

  雪不是对手,无奈只能让刑天斩手。刚要斩下,忽然刑天变成了老仙人

  。原来这只是仙人为考验他们而变幻出的幻影。因为靖仇和小雪都互相

  想着对方,所以通过了这场考验。回到然翁居后,古月仙人终于将玉儿

  三天后,古月仙人终于答应去搭救靖仇的师父了。但是先要去拿到

  仙山岛之西的盘古巨斧,而且还有盘古巨神在守护着。古月仙人还给了

  靖仇一个七角海笛,可以召唤到以前仙人的坐骑。到大地图可以看见西

  面有棵大树,往北走到一块尖尖的地图角上就可以召唤到坐骑了。到了

  海中建木后,一直往左走就会来到盘古神前。帮盘古“搔搔痒”后拿到

  盘古巨斧。回来后古月仙人让靖仇先睡一觉。第二天,老仙人运用御剑

  之术飞向伏魔山。由于有古月仙人的帮助,靖仇顺利的救出了师父。众

  人一起回到了仙人岛。在感谢老仙人的时候,才知他原来就是氐人族所

  说的剑侠,老仙人还答应帮氐人族重新结界。于是靖仇三人先向氐人族

  出发了。坐原来古月仙人的坐骑到东北海面,会看见一条大鱼影子,上

  面就是氐人族的地方了。来到王宫见过女王后,知道结界需要的道具崆

  峒印已经被宇文太师给夺走了。于是靖仇他们马上赶回老仙人处。和老

  仙人交谈后才知道用五样上古神器合起来会是失却之阵,和做皇帝并没

  有什么关系。为了保险期间,靖仇想让老仙人帮自己保存神农鼎和昆仑

  镜。正要给他,忽然靖仇的师父走了出来,坚决不同意将神器交入外人

  之手,和老仙人争了几句后,一气之下走了出去。靖仇担心师父的安危

  (一次发不完,下面接着)

}


· 超过12用户采纳过TA的回答

相传在神州大地上有着神话时代便流传下来的十样上古神器[钟、剑、斧、壶、塔、琴、鼎、印、镜、石],他们各自拥有不同的绝世力量,但关于它们的下落都已湮灭于神州漫长之历史中,俨然成迷。公元七世纪,北朝隋帝国消灭了南朝陈国,结束了中原南北朝长期分裂的局面。陈国遗民悲痛祖国灭亡,在江南集结大军,意图一举复国。隋朝出兵平乱,为首一位年仅十二岁之少年,以十神器之一的轩辕剑,在一击之间便将陈国的反抗大军消灭殆尽。

十六年后,随着一颗划过天际、象征乱世之兆的神秘妖星“赤贯”的出现。尚未弱冠的陈靖仇踏上了他寻找上古神器、对抗隋朝的孤独旅程。我们的故事就从这里开始了,时间是《轩辕剑3》的一百三十三年前。。。

一日,陈国后裔陈靖仇及其师父一同来到伏魔山上为寻找上古神器之一的昆仑镜,在山洞找到古镜之后,靖仇向师父问起父亲之事,于是师父向靖仇缓缓道来。原来十六年前,靖仇的师父和父亲在江南召集陈国的旧臣,意图复兴陈国。当时的隋文帝便派遣了曾经灭陈国的杨素前来迎战,而令人惊讶的是杨素却只带了区区的二十骑前来,那一仗由于一个拥有“阴阳妖瞳”的杨拓,而使得陈国大军一败涂地。也正是靖仇的师父为何要苦练鬼谷道术的原因了。师父还告诉靖仇,现在杨素已死,可杨拓还活着,并让靖仇好好的修习鬼谷之术,将来复兴陈国的重担就靠靖仇了。说完便让靖仇去拿昆仑古镜,靖仇刚想拿,忽然出现一头魔兽,可怜师父为救靖仇吐出冰丝将自己和魔兽封在洞中。一个时辰后,靖仇醒来后,师父便交待让他去雷夏泽找自己的师兄公山先生前来救自己。回到伏魔山脚下,靖仇决心一定要找到公山先生前来救师父,并唤出师父给的符鬼。前途茫茫,靖仇一人就这样上路了。

往东北走来到月河村。从张老伯口中得知雷夏泽应该往北走,谁知守桥的人告诉靖仇这几天在举行“河神祭”而不让通过,无奈之下,靖仇只能先找家客栈落脚再说。在客栈的门口还有个乞丐。好心的靖仇帮他从井里打了15碗水,乞丐也给了靖仇一点金疮药。在客栈问过贺老板后,靖仇觉得只能在这里住两天了,在上楼时还遇见了天生白发的贺小雪。睡过一晚后,早上起来就听见房客说村里的人在讨论抽签的事,于是靖仇出客栈到了村里。来到大夫的家中一打听,原来月河村每年会选一个女子来献给河神,而这次真好抽中了大夫的女儿,于是靖仇暗暗打算搭救这个女子。回到客栈中,从贺老板口中得知那个白发的贺小雪自愿以自己一命来救大夫的女儿,靖仇听到后非常气愤,打算到祭神那天去阻止。又睡了一晚后,一大早靖仇就出门了,在村南面找到了贺小雪的弟弟小朔,小朔告诉他小雪被关在月河河洞中,于是靖仇向河洞出发了。往南穿过树林通过洞中的迷宫后,在洞的尽头看见村人将小雪推下了河神洞中,靖仇阻止不及,也一同跳了下去。这时一条闪光打来,靖仇仔细一看,原来河神是条蛟精。费尽九牛二虎之力将它打跑之后,和小雪的对话中得知她也有可怜的身世。接着就是找出洞的路了,一直往左走就出洞了。回到月河村时却看到村民都已经死了,原来那个蛟精并没有死,逃出来后在村里进行报复,小朔和贺老伯都已被他害死了。靖仇怒不可竭,冲上去经过一番搏斗,终于将蛟精消灭了。但是愤怒的村民却竭力将靖仇贺小雪赶出了村外,看到小雪孤苦无依,靖仇就决定带小雪一起去找师伯,将来让她也有一个安身之处。于是两人向西北方的雷夏泽走去。

来到雷夏泽后,发现师伯已经伤病在床多时,一时也无能力解救师父。为让师伯的病好起来,靖仇听从了师伯夫人的意见,打算找到神农鼎。但师伯夫人说神鼎可能在法术高强的宇文太师手中,只能先到北方的鲜卑拓拨部落看看。

往北方先到黑山镇,却听得路人说北面有人的抓人办什么会。靖仇他们也走累了,于是走到酒楼里想吃点什么,刚坐下,就听得门外有人在大声的嚷嚷。走出去一看,原来是一伙军人为宫中的郡主强抢男童,说什么要将男童血喝后从此养颜不老。路见不平,靖仇刚想出手,却见一个胡人女孩先一步感到。打跑一些小兵后,那个军官忽然变成了邪尸骷髅,打晕了胡人女孩。这时靖仇出手相救,一番打斗之后,终于将骷髅打死。靖仇接着去扶那个女孩,但那女孩却不领情,幸好她的姐夫即时赶来。一阵感谢后,女孩的姐夫在酒店设下酒席款待靖仇。原来此人名叫张烈,是拓拨族人拓拨月儿的丈夫,他还告诉靖仇神农鼎可能已经被朝廷得到。正在吃饭之际,忽然张烈的族人匆匆走来,告诉张烈又发现有隋朝的妖魔军队跟踪他们,靖仇自告奋勇要求帮助张烈他们,于是三人向东面的树林走去。走到树林的深处,便看见一群小孩被绑在那里。经过两次激烈的战斗后,靖仇他们终于救出了孩子。

之后,靖仇跟随张烈来到他们族人的集聚地大雁岭,顺便也探听一下神农鼎下落的蛛丝马迹。但却没有什么收获,此时张烈也派出探子帮助打听神农鼎的下落。六天之后,张烈已经打听到神鼎的下落,原来确实在宇文太师手中,并且他把神鼎藏在北方涿郡的一个碉堡里。由于他偷藏神鼎被皇帝知道了,于是只能将神鼎运往东都,而此行的路线已经被张烈的探子所探到。正说道这里,拓拨月儿突然跑了进来,说玉儿不辞而别去找神鼎了,张烈又气又急,与靖仇一起往运鼎路线赶去。

在卢家渡,靖仇发现所有的船都被韩公公包走运美女了,再和张烈、小雪商量过后,大家都认为玉儿会在船上,于是几人想办法混上船。此时韩公公正好带着征来的美女上船,靖仇灵机一动,打算让自己扮女人让张烈扮军官,正大光明的混上船去。先向小雪问问应该怎么扮女人,小雪告诉他首先要找到胭脂、衣裳和簪子。在左边岸上找到胭脂,在右边的房间里,只要给那个小女孩一双靴子就能得到簪子(皮靴可向卖杂货的人买),在上面左边的房间里,给那个婆婆手镯和铁戒指就能得到衣裳了。好了,东西齐了,靖仇来到客栈和张烈会合。瞒过守船的士兵,到达第二仓内,却没有玉儿的踪影。三人打算再到船底层看看。到达底层后,不料被韩公公发现了,既然发现了,靖仇他们就打算劫船,直接开走。一路往甲板走去,打败守卫后,善良的靖仇又回去把那些女子放了。谁知回到甲板上后,韩公公已带着官兵来了,一场战斗后,从韩公公口中得知神鼎已运往龙舟了。

几天航行后,靖仇他们来到了大梁。从城南的徐老头那里得知神鼎已经被皇上运到龙舟上去了。经过商议后,他们打算先想办法溜到龙舟上再说。于是一行人先来到了码头。可是码头上有官兵守卫,怎么过去呢?靖仇仔细想过后,打算利用官兵转身的瞬间溜过去。骗过守卫后,三人来到龙舟队伍中,可是有好多龙舟啊,靖仇只能慢慢的找。在龙舟上可也是不能被官兵看到的喔。好不容易骗过了守卫,在一间屋子里找到了神农鼎,谁知仔细一看原来是假的。这时正好走来一个太监,经过一番拷问,原来真的神鼎已经被一个手拿宣花大斧,身骑黄骠马的响马抢走了。而太监生怕皇帝责怪,假造了一个鼎。善良的靖仇将太监放了后,他却在门外大喊大叫引来了官兵。靖仇只能另找出路,从房间地下通过后,一路往上走。走到与前一条船相同的地方,地下会有一个迷宫,出口大致在西北方。再从梁柱爬上去,经过七绕八绕的最后到了一块田字形的梁柱边,在右边最中间那根,靖仇发现了一个奇怪的地方,原来这里可以看见龙舟大厅。过了一会儿,又看见月儿装扮的宫女前来刺杀无道昏君杨广。正要成功时,宇文太师赶来阻止了拓拨玉儿,幸好靖仇及时用鬼谷之术施放烟雾而得以逃脱,在众多的追兵下,靖仇几人只能跳水而逃。在另一边,杨广让宇文太师去捉拿靖仇他们,并要他保护好要求同去的宁珂郡主。

在河边的破草屋中,昏迷的靖仇和玉儿相继醒来。靖仇打算继续寻找神鼎,而张烈要回拓拨部落主持大局。而玉儿硬要留下来和靖仇一起去寻找神鼎的下落。

三人向北来到豆子坑,村里左边的村民告诉靖仇确实是魔王岩的混世魔王把神鼎抢到山上去了。在上山前,靖仇他们来到酒店打算先填饱肚子再说。正吃着的时候,外面传来一阵呵斥声。出门一看,原来是一群士兵把运货商人当作土匪,正要抓他们。路见不平,玉儿怎么会答应。一出手便将那个军官打败,而随靖仇一起出来的两个巨汉也将另外的士兵摆平了。彼此寒暄一阵后,原来这两人竟是程咬金和秦叔宝,说完两人就走了。三人怕隋朝大军马上会来,所以向魔王岩赶去。来到魔王岩后,这里有喽罗守着,为了不打草惊蛇,靖仇来到水塘边打算潜水进去,可是玉儿不会游泳,还是小雪聪明,想出了用竹管子的方法,三人正要回村子找竹管子,忽然看见村里的农夫在往寨中送粮,于是决定下山去扮作送粮的混进寨中。回到村中后,正好遇见一群小孩,而且他们手上正好有竹管,但小孩提出玩捉猫猫的游戏,只要靖仇赢了,就把竹管给他(大多数的小孩都躲在山岩底下)。在找他们的时候还找到了宝物灵界指标和蟾涿香袋。再和最左边的村人说话,原来香袋是他掉的,他还答应送靖仇偷偷进魔王岩。

这下进魔王岩有两种办法了。虽然方法不同,但进去之后靖仇都会遇见一个很大的迷宫,里面可以得到青钢剑和暗杀宝录。在迷宫的尽头,靖仇他们遇见了程咬金。原来程咬金就是魔王岩的大王,于是玉儿向程咬金索要神鼎,傻头傻脑的程咬金却不给,快要打起来的时候,喽罗忽然来报官兵来抢神鼎了,傻老程还以为这是靖仇他们的声东击西之计呢。来抢神鼎的就是宇文太师,无奈他法力高强,靖仇只能眼睁睁的看着神鼎被拿走。误会的程咬金竟然还与靖仇他们打了一架,幸好秦叔宝看破这是宇文太师的诡计。靖仇答应程咬金在十五天之内一定找到神鼎回来还一个清白。往下就出了寨子,回到村中。出村向东走到了东莱,已经过了六天了,可是一点消息也没有。再出东莱走到泰山上面的树林那里遇见了受伤的齐二郎,送他回东莱后,从他的娘子打听到有一群士兵驻扎在了泰山,还在泰山上设立了奇怪的祭坛。于是靖仇他们马上赶往泰山。打败山脚下的士兵,三人冲到山顶,但山顶上空无一人。正好这时听到有说话声,三人就偷偷躲了起来。原来是宇文太师手下的杨硕和韩腾,他们竟然杀死了东莱城六万条人命去炼血丹。打败他后,他说出了事情的经过后便咬舌自尽了。靖仇在他的身上找到了一张地图和一封信。从信里得知,宇文太师好象确实没有得到神鼎,无奈之下,靖仇他们只能按照信上所说的再到大梁走一趟。

首先来到渡口,却发现一条船停在那里,十分可疑。靖仇看看时间无多了,也不管了,径直向船上杀去。往里走遇见一个隋军队长,原来他是一条鲤鱼精,打败他后(它会有三个化身,只有真身会受伤,打的时候要注意一点),忽然宁珂郡主走了出来,告诉靖仇她实在不满皇帝生灵涂炭,还说神鼎就在船上最底层,让靖仇他们跟她下去拿。走到楼梯口,玉儿觉得这是一个陷阱,最后决定让靖仇一个人先下去看看再说。靖仇下去后,宁珂见他一人前来,硬是又上去将小雪和玉儿拉了下来。在第二个房间里果然找到了神鼎,靖仇在用炼妖壶收鼎的时候,正好给宁珂看见。回到码头上以后,宁珂另外找了只船走了,临走的时候还送给小雪一根铃铛发簪。在还神鼎以前,靖仇想先把为师伯治病的药炼好,可是一看药方靖仇的头又大了,上面写着各种怪药,也不知道是什么。和玉儿商量以后,打算先到大梁的药铺先看看。

大梁的药店果然有这些药,只是独缺一种鵁肉的药,需要到西北的山洞打这种鸟。在西北的山洞打好鸟后回到船上,炼好治师伯的药后,靖仇就赶去魔王岩。见到程咬金才知道他已经归顺张须陀帐下,为拿神鼎三人与程咬金、秦叔宝再次战斗。打败他们后三人带着神鼎准备下山,靖仇打算先回雷夏泽为师伯治病,可玉儿硬要报答上次的救命之恩,要跟靖仇一起去,靖仇答应后,三人向雷夏泽赶去。

回到雷夏泽后,却只看见垂钓老人,打听之下知道师伯已经病故,想了一下后,靖仇决定回到大梁去找师伯母。乘船来到大梁后,在街上遇见师伯母的孙女,在她的带领下来到师伯母家中。从师伯的遗书上得知要对付魔兽还有一人,就是传说中的东海仙人。但是现有的船并不能出海,经师伯母介绍知道大梁城中有一赵姓工匠会造海船。去到隔壁的房间让赵工匠造船。三日后,大船造好,三人向东海进发了。谁知在海上遇见了一条大鱼,将船装翻,三人也被水吹到了一个岛上。在岛上兜了几圈后,遇到了氐人族的两个人,经过一番遭遇战后,出来一位氐人族女王。原来这里竟是那条大鱼的肚子里,那条大鱼也是上古神兽,名为巨海。说完后女王邀请三人去皇宫说话。(里面的一间房间里有遁形浮沙)与女王交谈后,靖仇答应帮她一起对付黑龙王。坐着鲸鱼向黑龙王处游去。走到龙宫的尽头就看见黑龙王了。靖仇三人全力向黑龙王杀去。打败他后,他却用计让玉儿拿下了崆峒印,使得氐人族的人都一下子变老了。虽然错误已经不能弥补,但玉儿还是和靖仇一起回到氐人族的王宫向女王道歉。玉儿为了表达对大家的歉意,毁了自己的容貌。几天后,女王为此也非常后悔,表示要送靖仇他们去仙人岛以缓和一下自己内疚的心情。

到了仙山岛后,经过几天的赶路,玉儿和靖仇的感情越来越好了。一天,玉儿又发高烧了,还好靖仇知道治病的药方。于是和小雪一起来到百草涧。找回来后熬好药,但玉儿吃了并没好。于是靖仇拿出神农鼎,又去采了一次药,回来弄好还是不见玉儿好转,这时小雪将自己的肉割了下来一起熬,过了两个时辰,玉儿终于醒了过来。第二天,三人继续赶路,走过百草涧就看见两个仙人在下棋,但和他们说话却不理。靖仇一连等了三天,那老翁总算下完了。听过靖仇的请求后,他让靖仇他们先到天外村然翁居休息休息。到了然翁居,两个仙人已经在那里了,但不管靖仇怎么恳求,那个古月仙人就是不肯救靖仇的师父。他还告诉靖仇玉儿会有生命的危险,让他明天去东皇岭去采百年地捻草。睡到半夜,玉儿忽然不行了,靖仇割下自己的肉熬药也不管用,只得去找老仙人求救。另一边,小雪去求古月仙人救救玉儿,正在说话时,老仙人带着奄奄一息的靖仇来。原来靖仇为采百年地捻草而失足落下了山崖。古月仙人终于被感动了,答应救靖仇和玉儿。第二天清晨,已经大好的靖仇来到院子里,古月仙人告诉他要救玉儿还要去西母峰找到血露蟠桃才行,并给了两人消除西母峰迷雾的火云珠。于是靖仇火小雪向西母峰走去。从西母峰一直往上走就可以看见血露蟠桃树了,小雪正要摘桃,突然出现了桃树的守护刑天,一场打斗在所难免。可是他太厉害了,靖仇和小雪不是对手,无奈只能让刑天斩手。刚要斩下,忽然刑天变成了老仙人。原来这只是仙人为考验他们而变幻出的幻影。因为靖仇和小雪都互相想着对方,所以通过了这场考验。回到然翁居后,古月仙人终于将玉儿治好了。

三天后,古月仙人终于答应去搭救靖仇的师父了。但是先要去拿到仙山岛之西的盘古巨斧,而且还有盘古巨神在守护着。古月仙人还给了靖仇一个七角海笛,可以召唤到以前仙人的坐骑。到大地图可以看见西面有棵大树,往北走到一块尖尖的地图角上就可以召唤到坐骑了。到了海中建木后,一直往左走就会来到盘古神前。帮盘古“搔搔痒”后拿到盘古巨斧。回来后古月仙人让靖仇先睡一觉。第二天,老仙人运用御剑之术飞向伏魔山。由于有古月仙人的帮助,靖仇顺利的救出了师父。众人一起回到了仙人岛。在感谢老仙人的时候,才知他原来就是氐人族所说的剑侠,老仙人还答应帮氐人族重新结界。于是靖仇三人先向氐人族出发了。坐原来古月仙人的坐骑到东北海面,会看见一条大鱼影子,上面就是氐人族的地方了。来到王宫见过女王后,知道结界需要的道具崆峒印已经被宇文太师给夺走了。于是靖仇他们马上赶回老仙人处。和老仙人交谈后才知道用五样上古神器合起来会是失却之阵,和做皇帝并没有什么关系。为了保险期间,靖仇想让老仙人帮自己保存神农鼎和昆仑镜。正要给他,忽然靖仇的师父走了出来,坚决不同意将神器交入外人之手,和老仙人争了几句后,一气之下走了出去。靖仇担心师父的安危而追了出去。来到莫支滩向一个人打听到师父,那人告诉靖仇有一个人去了大蘑菇的地方(就是对弈亭)。来到对弈亭,师父果然在这里,他让靖仇和玉儿划清界限,还说要先找到五样神器。回到然翁居后向老仙人告别,他还送了盘古巨斧给靖仇,让他能在仙界和人界来往。

走到南面的大禹传送点(那个一亮一亮的就是),传送到人界后靖仇来到江都。听这里的老百姓说会稽郡的村民一下全都死光了,和上次东莱城一模一样。回到客栈告诉师父后,靖仇提出想去会稽郡看看,但师父却又大发雷霆。为等他气消,靖仇在江都先逛逛。在桥上遇见四百年的白鹿精,从他口中打听到伏羲琴在敦煌,崆峒印在长沙,而女娲石不知在哪。他还提到一个叫叶罗什的人到处在降妖伏魔。靖仇打算先到长沙找印,白鹿告诉他要去长沙要通过大禹水道,而只有西边杏山茅屋的乔岱娘能驱除水道中的藤蔓。回去和师父说了一声后靖仇就出发了。先到西面的杏山找乔岱娘,她二话没说就答应帮靖仇的忙,不过她让靖仇帮她去长沙带琼花种子来。从大禹水道来到长沙,先去种子店买琼花种子。买好后小雪说看见了独孤郡主在城里,找到独孤郡主后,她说了许多关于神器和宇文太师的事情,并打算和靖仇里应外合去西北的兵营抢回崆峒印。第二日,靖仇来到兵营和宇文太师手下二虎将交手(第一仗必败),打败他们之后,上官震远从秘道逃走,但却被郡主杀死。靖仇得到崆峒印后打算再找伏羲琴,郡主告诉他要去敦煌石窟先要经过大兴(长安城)。于是靖仇先回江都接师父。

往北过关卡后,就到了大兴。先去见郡王,独孤郡王府就在皇宫的左面。由于郡王的热情,靖仇他们就在郡王府住了下来。这一日,师父让靖仇去打探一下余下神器的消息,于是靖仇在城里逛了起来(城里的西市有很多好东西哦)。逛着逛着来到了宇文太师府,遇到涪陵的刘元,原来涪陵郡也已经被宇文太师所毁灭。从刘元给的地图和信来看,相信宇文太师下一个目标就是长沙。回到郡王府和师父商议后就向长沙出发了。来到长沙上面的隋军大营,可惜还是晚了一步,宇文太师的血祭已经完成。众人怒不可竭向宇文太师打去。可靖仇还不是他的对手,连师父也被他打伤了,他还让靖仇在三日之内将神农鼎和崆峒印交给他。无奈之下,靖仇打算先找老仙人和古月仙人帮忙。通过江都边的仙界传送点来到仙界。可是仙人一个都不在,没有办法,靖仇只能带着神器回到隋军大营见宇文太师。在无奈之下将鼎和印交给宇文太师换回师父,回到江都,因为师父受伤较重,所以靖仇让师父在这修养,而自己赶往大兴的郡主府向郡主道歉。到大兴郡王府向独孤郡主道歉后,她告诉靖仇真正的女娲石是在蜀郡的巴蜀古王墓里,还给了长寿关的令牌。

在大兴的西南面就是长寿关,过关西南面就是巴蜀古王墓了。通过了迷宫、打败斛律安后拿到了女娲石,但那个奸诈的斛律安临死又将女娲石夺走了。另一边,宇文太师受到了斛律安死前传来的女娲石,但他一看便知又是假的,于是打算亲自去敦煌找伏羲琴,原来他竟是昆仑镜转世之人。在古墓中的靖仇觉得既然神器已失,只能先回大兴。回到郡王府后,师父已经到了,冲着靖仇大发脾气,这时小雪的身体又有点不舒服,于是靖仇再到城里去找大夫。在利人市找到宋大夫后回到郡王府,诊断好小雪。独孤郡主又告诉靖仇宇文太师去了敦煌,而把崆峒印、神农鼎和女娲石放在了皇家财宝室。从郡主的秘道中找到藏宝室并拿回三件神器。回到郡王府,师父非常高兴,而小雪却怪怪的说宇文太师做的事情是对的,靖仇正在妨碍他。第二天,玉儿突然跑来说小雪不见了,到小雪房间里看见只有女娲石,郡主认为小雪拿了另外两个神器投靠宇文太师去了,并让靖仇去玄武门和大兴城门问问守卫是否见过小雪。靖仇问过两个城门的守卫后他们都说没有看见。回到郡主府后,郡主的丫鬟来说宇文太师已经拿到伏羲琴了,而且小雪也拿了鼎和印去投靠他了,郡主还告诉靖仇,他们手上的昆仑镜和女娲石都是假的,说完便气乎乎的走了。玉儿建议靖仇一起先去太师府去看看,到太师府知道宇文太师下一个要在灵武祭血灵丹,于是靖仇和玉儿赶往灵武。出长寿关往北走,通过萌霞关再往北走过一片流沙地就是灵武了。在灵武并没有见到宇文太师,于是靖仇又出城往西北方的隋军大营赶去,到后正看见韩腾开始血祭,马上阻拦,打败他后小雪忽然出现,还手持轩辕剑保护血祭顺利进行。靖仇眼睁睁的看着血祭成功却没有办法。

回到大兴郡主府,靖仇经过此事后已经觉得心灰意冷了,不想再和宇文太师这样的斗下去了。深夜,玉儿一人正在弹琴,独孤郡主走来向玉儿说了小雪为何要走的原因,出于内疚玉儿打算夜探太师府找小雪回来。通过郡主安排的秘道玉儿来到太师府,在太师府见到了小雪,她把整个事件源源本本的告诉了玉儿,原来宇文太师做的才是对的。拿着小雪口述的信件回到门口。见到郡主后,玉儿将所有的事情全都告诉了她,正要回去,突然郡主对玉儿痛下杀手,原来真正的大恶人是她。夺走小雪的信后又将玉儿打成重伤,然后还用计将靖仇骗来,靖仇不知是计,误认为杀死玉儿的就是小雪。为救治玉儿靖仇来到仙山岛,可是老仙人和古月仙人都不在,等老仙人的孙女将仙人找来时,玉儿已经香消玉殒了。三天后,靖仇来到对弈亭见古月仙人,把事情经过说给他听后,他认为宇文太师已经无人能敌了,劝靖仇死了这条心,还说在天界有一伏羲神殿中有天女白玉轮可就玉儿的性命。回到然亭居后将玉儿的水晶棺带上,在对弈亭告别仙人后回到大兴郡主府。心灰意懒的靖仇向郡主告别,打算带着玉儿的遗体回北方,而靖仇的师父也原谅了他,同意从此不再提复国的事了。

离开郡主府,出玄武门。半夜时分靖仇遇见了李世民,他向靖仇出了一个好主意后并约定在太原城相见。来到太原府正好看见张烈也在这里,他告诉靖仇有对付宇文太师的办法,并给了过云岗石窟的汰玉如来给靖仇。太原的西面就是石窟了。在石窟的一间房里把汰玉如来放在桌上会出来一条天梯。通过天梯靖仇来到通天塔,但是塔门已经被结界所封住,要用泛云龙玉才行。三人来到洛阳,在客栈楼上看见郡主,她说要帮忙找李靖。在城门口找到李靖,众人来到张烈的家,张烈交待了一下后便和靖仇一起向通天塔走去。从塔底走到塔中会遇见韩腾,打败他后到达塔顶见到宇文太师,可是靖仇还不是他的对手。郡主这时也赶来了,并挟持了小雪。靖仇正当宇文太师分神之际,将他打伤,但自己也被宇文太师的力量所震晕。郡主在此时突然露出她的真面目,原来她竟是撒旦手下的魔将。

几天后靖仇醒来,小雪将事情都告诉了靖仇。于是靖仇打算先到仙人岛去找老仙人想想办法。在然翁居找到老仙人,他说自己也无能为力,要靖仇再去找古月仙人问问。到莫支滩找到他,他让靖仇先去找宇文太师和神器。

之后靖仇来到惊魂塔与蛰魂塔,一路走上去打败女魔头夺回崆峒印和神农鼎后,马上又去通天塔救宇文拓,在塔外会遇到程咬金和秦叔宝。来到通天塔,但通天塔入口被结界封住,于是再回仙人岛请老仙人想办法,程咬金和秦叔宝也先回营部。在岛上古月仙人答应和靖仇一起去通天塔。在通天塔古月仙人将结界打开后便分成三路前进,靖仇去救宇文拓,古月仙人直接至塔顶布阵,余下的人去找伏羲琴。靖仇找到宇文拓后,郡主也出现并露出真面目和主角们打起来,击败郡主救了宇文拓后继续往塔顶前进。到了塔顶,古月仙人叫宇文拓站在中间圆圈,小雪和其它神器放在六角的圆圈,经过仪式,一行人被传送至虚空之门。

通过次元交错空间来到了伏羲神殿,靖仇发现了天女白玉轮之阵,于是想将玉儿救活,但是这就需要用到伏羲琴和女娲石,为了阻止赤贯,无奈靖仇只能放弃,走到赤贯星内将两道光柱关闭,阵的传送点开启,到布阵地方后,便开始布阵将天之痕封印,古月仙人告诉靖仇一旦封印,玉儿将从此在靖仇脑中消失。正当仪式要开始时,郡主闯入,将郡主打败后但是又发现有人在破坏赤贯星中枢,查看之后发现竟然是师父,而他吃下撒旦魔果后,整个人便非常疯狂,靖仇无奈只得和师父决战。战胜后,宇文太师和古月仙人也将天之痕修补完毕,靖仇再向他们说明事情经过后,古月仙人将一行人带回去。通天塔终于毁了,我们的故事也将告一段落了,靖仇和小雪究竟怎么样了,还是留待各位自己来体验吧!

若是玉儿的好感度高于小雪,在伏羲神殿时,古月仙人会在小雪的恳求下让玉儿复活,而小雪因耗费真气过多,身体十分虚弱。到布阵地方后,大家开始布阵将天之痕封印,正当仪式要开始时,郡主闯入,将郡主打败后但是又发现有人在破坏赤贯星中枢,查看之后发现竟然是师父,而他吃下撒旦魔果后,整个人便非常疯狂,靖仇无奈只得和师父决战。打败魔化后的陈辅,靖仇心中悲痛莫名,但他仍打起精神,封印天之痕。在如梦似幻的空间中,靖仇看到自己的师傅,却什麽也记不得。而小雪在用尽所有力量之后,化为女娲石,她在向靖仇道别时,说出了心中的话:和靖仇与玉儿一起旅行的那段时光,是她生命中最快乐的。

}

深入的探讨了log机制中各种概念的来源、常用log库的用法、内部处理流程,以及如何在一个涉及多台主机的复杂系统中部署log等问题。本文是对这次分享的总结,将对这些问题一一展开介绍。

转自:)等等。最早处理log的库是,它是Apache为Java发布的一个开源log库,后来基于这个库衍生了很多具有相似API的库。我们这里介绍的库是基于发展而来。

后面就用log4me作为我们使用的库的名称

让我们先从无到有,从一个个简单的使用场景一步一步分析log库中各种概念如何发展而来。当然,我没有去真正追究它的历史,只是从个人需求角度分析得来。

代码中经常会需要打印一些提示信息用于显示程序工作流程,或者反馈错误信息,这就是所谓的log,就像船员的航海日志一样,我想log也是由此得名吧。为了输出这些信息,在C/C++中最简单的方法是用printf或者std::cout

我们本可在每处需要打印log信息时都采用这种方式,但不妨先停下来试想一下,如果在一个log文件中你看到满屏幕的这种信息,但是却无法知道是谁,在什么时候,什么位置输出这条信息,那这种log的价值便大大折扣。于是,你会需要在每条log中增加一些额外有用的信息:

这样,每条log就有了时间,文件和行号这些额外有用的信息,非常有利于分析问题。

但是,这样会不会太麻烦?每次在写代码时,打印一条简单的log你需要加这么多无关的内容,万一忘了怎么办,这简直无法接受。你想要把所有的注意力都放在log本身上,不想关注其它的细技末节,怎么办?注意看,上面的函数调用中,后三个参数都是固定的,于是你可以对它进行这样简单的封装:

注:这里用宏而不采用函数,正如评价中@weitang指出的,如果是函数的话,__LINE__的值会一直是函数中的行号,是一个固定值,而不是调用处的行号。另外,这个版本的宏只支持一个参数,后面调用它的其它函数中传了可能不止一个参数,是为了演示方便。各位有兴趣的话可以自行写出合适的printf0版本。

还是一样简单的调用,不需要你再去输入一些无关的内容,因为这个封装的函数已经替你做好了。

log信息并不是千篇一律只起一种作用,有的是纪录程序的流程,有的是错误信息,还有一些是警告信息。为了让log更有可读性,你可能想要把不同的信息区分开来,比如这样:

那么,你就可以通过在log文件中搜索Normal、Warning或者Error这些关键字就能够找到特定的log。这对于排错帮助非常大,比如你只需要搜索Error关键字就能够得出程序的出错信息。

但是,这些Normal、Warning以及Error关键字需要你每次都加在要输出的字符串中,同前面一样,你还是只想关注log本身,不愿意log和其它的信息混在一起。于是可以这样做:

现在你只需要指定一种log类型,就可以全心全意的处理log信息本身了。我们把上面的Normal, Warning和Error叫做TraceLevel,故名思义,它表示log的等级。

如此一来,对于特定等级的log只需调用各自的log输出函数即可,除此之外,注意力全部放在log信息本身上。

在代码中,通常最多的log是Normal类型,即显示程序流程。有时你可能只想log文件中存储Warning和Error类型的信息,Normal对你来相当于干扰信息,而且log文件也会因此变得很大。有时你又会想让log中包含所有类型。如何协调?如果可以动态的选择哪些等级的信息输出,那岂不是log文件就变得像是根据我的需求定制一般,可以随意控制log包含哪些级别的信息么?

根据这一思路,代码可以这样改变:

这里暂时没有采用前面简化的方法。

getLevel1()从配置文件中读取当前允许的Level,代码中只有高于当前Level的log才会被输出,现在log文件便可以随着你的需要而定制了。

再来考虑这样一种情况,如果你的文件非常大,中间要输出的Normal log非常多,分为不同层次,比如:粗略的流程,详细一些的,十分详细的。和很多命令的-verbose参数一样。由于都是Normal类型的log,所以不能够用前面的TraceLevel,这时需要引入另外一层控制:

这里提供了四级的控制,和前面的 TraceLevel一样,它也可以通过配置文件配置。假设现在配置的是 TRACE_1,那么代码中想要输出的三条信息中,只有前两条能够输出。这层控制我们称之为 Marker

注意到这里定义的四级控制是可以通过位来操作的,能够任意组合。如果想要TRACE_1TRACE_2都能够输出,那么只需要设置:

如果marker设置为SUB,则表明全部输出。通过增加这层控制后,log的订制变得更加灵活。

到目前为止,所有的log都写到控制台。如果你想log写到文件中怎么办?如果不是控制台应用程序,比如,Win32或者MFC程序,log又该写到哪里去?也许你想到可以使用fwrite代替前面的printf,但是如果你想同时能够将log写到控制台,又写到文件中或者其它地方怎么办?

放弃这种硬编码的方法吧,你可以想到一种更加灵活,可以像前面TraceLevelMarker一样容易配置的方法,能够更加优雅的控制log输出的目的地,但不需要硬编码在代码中,而是可以配置的。一起来看下面这段代码:

这里定义了一个叫做Appender的基类,可以理解为处理log目的地的类,它有一个方法printf,对应着如何处理传给它的log。

接下来定义了三个子类,分别代表输出目的地为控制台、文件和Windows的EventLog。它们都覆写了基类的printf方法,按照各自的目的地处理log的流向,比如ConsoleAppender调用前面的printf2函数,而FileAppender可能调用类似的fwrite。这样一来,只要我们为一个程序配置用哪些Appender,log就可以根据这些配置交给对应的Appender子类处理,从而无需在代码中硬编码。

这处理每一种目的地的类我们称之为Appender

现在我们的log机制已经足够的完善。但是,随着程序规模越来越大,一个程序所包含的模块也越来越多,有时你并不想要一个全局的配置,而是需要每一个模块可以独立的进行配置,有了前面的介绍,这个需求就变得很简单了:

对比前一节的代码,可以发现这里除了增加一个参数 const char *cat以外,其它完全一样。但正是这个参数的出现,才让每一个模块可以独立的配置。这种模块间独立进行配置的方法我们称为 Category

前面多次提到配置,为了达到可以灵活配置的目的,通常会将这些配置保存成一个文件,比如logConfig.ini

那么在什么时机读取这个配置文件?一般有这样几种方式:

  • 程序启动时载入logConfig.ini,如果配置不常改变时可以采用这种方式,最简单。
  • 创建一个新线程,间隔一段时间检查logConfig.ini是否已经改变,如果改变则重新读取。这种方法比较复杂,可能会影响效率,而且间隔的时间也不好设置。
  • 处理每一个log之前先检测logConfig.ini,如果有改变则重新读取。
  • 最后一种方法结合了前两种方法的优点,还是在处理每个log之前检测,但不同的是再加上一个时间间隔,如果超过时间间隔才会真的去检测,而如果在间隔内,则直接忽略。这种方法更加高效且消耗资源最少。

对于后面三种方式,每次配置文件有了更新之后,log输出几乎可以实时的作出应变。

至此,一个简单灵活的log原型建立了,虽然它还是非常简陋,但已经有了现代log库的雏形,包含了其中几个重要的概念。下面我将以我们所使用的log4me库进行分析。

前面介绍的log雏形完全是小儿科式的代码,只是起一个演示作用,实际上我们无需重新发明轮子。如本文开始所介绍,已经有非常多专业的库来处理log,这些库以最简单的接口提供了最大化的log信息。我们这里采用的log4me库就有这样几个优点:

  • 跨平台,在Windows和Linux上有着完全一样的接口与行为
  • 更细的粒度来控制log

我们定义了下面几个宏,专门用于Library1下的log输出,这里会取配置中Library1这个Category的配置,分别输出不同TraceLevel的log。

这里所有的配置都通过配置文件完成,还有一种动态的在代码中创建log的方法,log4cpp的官方网站中有,我们这里就不介绍了。

在我们前面的演示代码中,提供了一种非常简单的配置文件,常见的存储配置文件的格式有xml,Windows的ini。log4me中使用的是前者,并且提供了专门的工具来简化其操作,如下图所示:

根据上图我们进一步来看一些概念:

TraceLevel用来控制输出的log等级,下面这些比较常用:

DEBUG : 调试信息,通常用于诊断问题 INFO : 确认一切按计划照常工作 WARNING : 程序仍然可以运行,但有意外发生,或者将来有问题可能要出现(比如硬盘容量低) CRITICAL : 严重错误,表示程序可能无法继续运行

这些等级按从上到下依次增加的顺序排列,配置TraceLevel后,那么只有上表中位于该level之下的才能够输出。

Marker用来进一步控制log的分类,不像前面的演示代码只定义了四种,通常库会完全使用一个32位的整型来表示这些分类,每一位代表一类,这样就有了32种分类,对于大多数应用场景来说这已经完全足够。

前面介绍过Appender这个概念,它用来处理log的输出目的地,但真正的库可远不止前面介绍的三种Appender,log4me提供了这些:

注意:最后一个Appender是TraceSrv,它写到memfile中。什么是memfile?这是Linux上的一种内存管理的方法,它将文件映射到内存,通过直接读写内存来操作文件,从而使文件操作变得极其高效便捷,可以参考这里:。

在Appender中还有一些常用的属性可以配置:

  • FileCount & FileSize: 用于文件回卷,比如一个log文件lib.log过大时,可以将它重命名为lib.1.log,然后再重新创建lib.log。可以创建多个文件,而这两个参数就用于控制文件数目和单个文件大小。

这个概念在前面没有介绍过,但它也非常容易理解:每个Appender都可以包含一个formatter,它用来格式化log信息。因为一条log信息可能包含时间,文件名,行号,TraceLevel,进程ID,正文等信息,有时为了简化log输出,对所有的这些分类作一个取舍,从而达到格式化的目的。这很像C语言中的printf

那么log的输出会像这样:

每一项都和前面formatter中设置的一一对应。

现代的log库一般都将Category组织成树型结构,每一个节点都和前后组成父子关系,根据设置,子节点的Category完全可以继承父节点的配置。所有的Category的根节点是root。这里是一个典型的结构:

一个Category可以包含下面这几个内容:

Name, TraceLevel, Marker和Appender这里就不再赘述。上图中有一个Flag,这是什么?它的存在和前面的树型结构息息相关。前面讲到,因为Category被组织成了树型关系,子节点可以继承父节点的配置,那么何时可以继承,如何继承?这就是Flag的作用了,它包含了两个选项:

  • Process Parent: 如果勾选这一项,就表示一个子节点的log可以传给它的父节点处理。这也是为什么很多情况下只需要配置Root节点,其它的子节点设置这个Flag,就可以默认使用Root的全部配置。
  • Use All Parent Appenders: 如果只有上面的Flag,那么每次信息传到父节点时,父节点都必须根据自身的TraceLevel及Marker进行匹配,只有匹配时才会处理。而如果此Flag打开,那么在传输过程中,只要传输路径上有一个节点匹配,再向上传的所有节点都不再匹配而直接处理。

至此你已经完全了解了log的基本概念以及用法,接下来我们更进一步,来看看log内部是如何工作的。

有了前面的演示代码之后再来看log内部处理流程将变得十分简单,大致可以分为两步,第一步过滤

它在log的调用线程中发生,有些线程可能会对实时性有一定的要求,那么log就不能够在这种线程中去直接执行,而是将创建的log对象加入到队列中,由专门的log工作线程处理,这样就完全不会阻塞住主线程,保证主线程畅通无阻的运行。

流程的第二步是处理消息

筛选过Category之后会将消息发给每一个合适的Appender,由Appender进一步的筛选及格式化输出。注意在这一步的刚开始有一个Check Config步骤,这和我们前面讲的加载配置文件的时机有关,很明显,这里用的是最后一种读取配置的方案:即每次处理log时,检测配置是否更新。

也许你会想,一个简单的库有什么好部署的,直接拿来用不就得了。可有时因为性能,或者系统过于庞大,配置起来会相当复杂,如果log组织的不好的话,你就会见到log文件满天飞,散落各处的情况。有时你可能会需要一个总的log文件包含所有的信息,一些特定目的的log还要存于不同的文件中。如何保证不同进程,甚至不同的机器上的不同进程能够无冲突的写到同一个log文件中呢?假设一个系统包含一台Windows,一台Linux,如何收集散落各个机器的log?如何方便的在Windows上查看本应出现在Linux上的log?如果你有疑问,请看下面的解决方案:

这个系统足够庞大,包含了两台机器,左边是Windows,右边是Linux。每台机器除各自保存log之外,还将所有的log都最终交给Windows上的TraceSrv来处理,最终会有一份完整的包含所有机器的log存在于TraceSrv.log中,还有各个不同模块的log文件。同时,还能够通过远程调用TraceOnlReader来实时从TraceSrv中读取log信息。如上图所示,两侧绿色的Log图例中,红色的信息沿着箭头先全部汇聚到TraceSrv,然后再分发到不同的文件中。

这样,开发者就可以通过一次配置,便可以非常方便的组织好所有的log文件,调用端完全剔除了这些复杂的细节,只需要关注log本身。

另外注意到,在Windows和Linux端各有一个memfile,它们各自存有机器上的所有log信息,由于是运用了前面所说的mmap机制,程序直接以操作内存的方式来操作文件,非常高效。

好了,至此所有在知识分享中的内容便介绍完毕,希望对感兴趣的你有所帮助。

我很喜欢部门的知识分享,分享是件好事,在分享的过程中,不仅仅可以让他人获取有用的信息,而且你在分享前需要不断的归纳总结,印证你的结论。在这个过程中,很多你当时思考不充分的问题也可能会得到解决,对你自身的知识、表达能力都有非常大的提高,利人利己。

不知你是否有过这样的经历,你遇到一个问题,百思不得其解,于是想向他人求助,可就在你向他人解释这个问题的过程中,说着说着,你发现你找到问题的所在,于是问题解决了,甚至别人还没明白怎么回事。我就经常遇到这种情况。根据这点,有人总结出了一种新型的解决问题的方法,叫做橡皮鸭调试法,对它有一个介绍,Jeff Atwood也专门写过一篇文章:。(至于为什么叫橡皮鸭而不叫其它的,我想大概和美国人的成长经历有关吧,每个孩子洗澡时都喜欢在浴缸中放一只橡皮鸭,并与它交谈,就像我们儿时的各种玩具一样。)这样做其实是有根据的,它和分享如出一辄,当你和橡皮鸭”交谈”时,你需要彻底的把你的问题仔仔细细的描述一遍,不会放过每一个细节,为防质疑,你可能会做更多的调查。你在描述的同时,也一定在思考,这时之前没有考虑到的方面可能就会暴露出来了。如果使用得当,也许,橡皮鸭调试法可以成为log和debug以外,你分析问题又一强有力的武器:-)

最后,强烈建议你去看看Jeff的这篇文章。

}

我要回帖

更多关于 浮沙是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信