Schafer was drafted by the Milwaukee Brewers in the third round of the 2008 amateur entry draft. He was previously drafted twice, but did not sign; first by the Boston Red Sox in the 31st round in 2006, and then by the Colorado Rockies in the 47th round in 2007. In 2008, he played for the Rookie league Helena Brewers and Class A West Virginia Power. In 2009, he was promoted to the Class A-Advanced Brevard County Manatees and Double-AHuntsville Stars. He was named the Brewers' minor league player of the year for 2009.[1] Schafer sat out all but seven games in 2010, played with Brevard County, due to a sports hernia and a broken foot.[1] He received an invitation to major league spring training with the Brewers in 2011. On September 2, 2011, Schafer made his major league debut. After playing in only 16 games for the Brewers in 2012, Schafer cracked the clubs 2013 Opening Day roster.[2] On July 10, 2013, Schafer hit his first career home run off of Tony Cingrani of the Cincinnati Reds.[3] On April 17, 2014, Schafer strained his hamstring and had to be placed on the disabled list.[4] Schafer made the Brewers' Opening Day roster in 2015 after hitting .321/.379/.415 in 58 plate appearances in Spring Training.[5] On September 11, 2015, Schafer had the walk-off hit in a 13-inning game against the Pittsburgh Pirates.[6] On November 2, 2015, Schafer was outrighted off of the 40-man roster and elected free agency on November 6.[7]
Washington Nationals
On November 17, 2015, Schafer signed a minor league contract with the Washington Nationals.[8] Schafer was released[9] on March 19.[10]
On June 2, 2016, Schafer signed a minor league deal with the Minnesota Twins.[11] On August 28, Schafer's contract was purchased from Triple-A Rochester by the Twins.[12] On October 17, 2016, Schafer was outrighted off of the roster and he elected free agency the next day.[13]
Baltimore Orioles
On December 1, 2016, Schafer signed a minor league contract with the Baltimore Orioles.[14] He spent the 2017 season with the Triple-A Norfolk Tides, playing in 113 games and hitting .247/.314/.343 with 3 home runs and 33 RBI. Schafer elected free agency following the season on November 6, 2017.[15]
Post-baseball career
In 2018, Schafer returned to Cal Poly-SLO to complete his business degree.[16]